Problema gridview event

venerdì 23 gennaio 2009 - 09.50

giobaxx Profilo | Junior Member

SAlve a tutti....
ho un gridview, faccio selezionare l'intera riga e quello che vorrei fare è questo, quando con il mouse mi viene visualizzato sulla form l'anteprima di una immagine il cui path è salvato nel datagrid...e se faccio invece il doubleclick mi si apre una nuova form con tutti i dettagli relativi a tale riga seleziona.....

facile no??....

il problema che quando faccio il doubleclick parte anche l'evento click!!!.....è possibile?

aiedail92 Profilo | Expert

Ciao

Il fatto è che l'evento Click viene generato quando fai click col mouse, quindi viene generato anche prima dell'evento DoubleClick (infatti il computer non può prevedere se al primo click ne seguirà un altro)

Comunque il modo per risolvere c'è, basta ritardare l'effettivo svolgimento di ciò che vorresti fare quando fai un click singolo dopo il tempo massimo per eseguire un doppio click... Io l'ho fatto usando un timer, ecco un esempio del codice:

//Questo è il costruttore public MainForm() { InitializeComponent(); //Crea il timer clickDelayer = new System.Timers.Timer(SystemInformation.DoubleClickTime); clickDelayer.AutoReset = false; clickDelayer.Elapsed += new ElapsedEventHandler(clickDelayedHandler); } bool dblClicked; System.Timers.Timer clickDelayer; private void TuoControl_Click(object sender, EventArgs e) { //Quando viene eseguito un click, attende che passi il tempo //stabilito prima di eseguire il codice, così da poter evitare //il codice del click se viene eseguito il doppio click dblClicked = false; clickDelayer.Start(); } private void TuoControl_DoubleClick(object sender, EventArgs e) { //Se double clicki, avvisa il click di non essere eseguito dblClicked = true; //Gestisce il doppio click ManageDoubleClick(); } void clickDelayedHandler(object sender, ElapsedEventArgs e) { //Controlla se è stato fatto il double click, in tal caso non fa il click if (dblClicked) return; //Gestisce il click, sul thread del Form if (this.InvokeRequired) this.Invoke(new Action(ManageClick)); else this.ManageClick(); } void ManageClick() { //Fai quello che devi fare MessageBox.Show("Clicked!"); } void ManageDoubleClick() { //Fai quello che devi fare MessageBox.Show("DoubleClicked!"); }

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5