2012-11-19 11 views
6

Ho due eventi DataGridView. Ho un problema, quando faccio doppio clic su una cella, vengono invocati sia gli eventi, ovvero gli eventi cell click e cell double click. per favore forniscimi la risposta perchč questa soluzione č stata e cosa?Evento di doppio clic della cella nella visualizzazione della griglia di dati

Grazie

+1

Non so come si usa, ma penso che possa essere risolto usando 'hook' e' unhook'. oppure "Timer". –

+0

Si prega di fare riferimento a questo link. http://stackoverflow.com/questions/4252735/double-click-to-windows-form-in-c-sharp Spero che questo hepls :) –

risposta

1

A quanto pare non c'è modo a quello appena impostando le proprietà nel del DataGridView. Così si può usare il timer per contare se ci fosse qualche doppio clic, se non solo fare quello che fa in yous gestore di eventi click, controllare il codice:

System.Windows.Forms.Timer t; 
     public Form1() 
     { 
      InitializeComponent(); 

      t = new System.Windows.Forms.Timer(); 
      t.Interval = SystemInformation.DoubleClickTime - 1; 
      t.Tick += new EventHandler(t_Tick); 
     } 

     void t_Tick(object sender, EventArgs e) 
     { 
      t.Stop(); 
      DataGridViewCellEventArgs dgvcea = (DataGridViewCellEventArgs)t.Tag; 
      MessageBox.Show("Single"); 
      //do whatever you do in single click 
     } 

     private void dataGridView1_CellClick_1(object sender, DataGridViewCellEventArgs e) 
     { 
      t.Tag = e; 
      t.Start(); 
     } 

     private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
     { 
      t.Stop(); 
      MessageBox.Show("Double"); 
      //do whatever you do in double click 
     } 
+0

grazie per la vostra risposta, ma Voglio interrompere l'evento click cell da invocare quando la cella fa doppio clic su invocazione – AhmedShawky

+0

@ user1835772 OK, ma non penso che ci sia un modo per farlo. Perché questo sarebbe un problema? Funziona esattamente come vuoi tu. L'hai provato? –

+0

sì, ma ho trovato anche il clic di cella invocato – AhmedShawky

1

È con problemi di Windows. per quanto ne so non hanno aggiunto nulla di speciale per gestirlo.

È possibile gestire questo -

  • a) basta fare click qualcosa che ci si vuole che accada prima di un doppio clic, come selezionare.
  • b) se questa non è un'opzione, quindi sull'evento click, avviare un timer. Sulla spunta del timer, eseguire l'azione con un solo clic. Se l'evento di doppio clic si verifica per primo, uccidere il timer e fare l'azione doppio clic.

L'intervallo di tempo impostato deve essere uguale al tempo di doppio clic del sistema (che l'utente può specificare nel pannello di controllo). È disponibile da System.Windows.Forms.SystemInformation.DoubleClickTime.

+0

grazie mille proverò questo – AhmedShawky

1

È possibile utilizzare evento RowHeaderMouseClick di griglia

private void dgv_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 

    } 
Problemi correlati