2012-11-19 70 views
6

我有兩個DataGridView事件。我有一個問題,當我雙擊一個單元格時,事件即cell clickcell double click事件都被調用。請給我回答爲什麼發生這種情況和最新的解決方案。數據網格視圖中的單元格雙擊事件

謝謝

+1

我不知道如何使用,但我認爲可以使用'hook'和'unhook'解決。或者'定時器'。 –

+0

請參閱此鏈接。 http://stackoverflow.com/questions/4252735/double-click-to-windows-form-in-c-sharp 希望這個hepls :) –

回答

1

顯然是沒有辦法,只是通過在DataGridView的設置屬性。所以,你可以使用定時器來算,如果有任何雙擊,如果不只是做任何你在你要跟單一的點擊事件處理函數中執行,檢查代碼:

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

謝謝你的回覆,但我想停止單元格單擊事件,當單元格雙擊invocked時調用 – AhmedShawky

+0

@ user1835772好的,但我不認爲有辦法做到這一點。爲什麼這會是一個問題?這工作正如你想要的。你試過了嗎? –

+0

是的,但我發現單元格點擊調用 – AhmedShawky

1

它與Windows的問題。據我所知,他們沒有添加任何特殊的東西來處理它。

您可以處理此 -

  • 一)只是讓你想要雙擊之前發生的,就像選擇單次點擊的東西。
  • b)如果這不是一個選項,那麼在點擊事件上,啓動一個計時器。在計時器勾號上,執行單擊操作。如果首先發生雙擊事件,則取消定時器,然後執行雙擊操作。

的時間量設置的時間應等於系統的雙擊時間(用戶可以在控制面板中指定)。它可從System.Windows.Forms.SystemInformation.DoubleClickTime獲得。

+0

非常感謝我會嘗試這個 – AhmedShawky

1

可以使用電網的RowHeaderMouseClick事件

private void dgv_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 

    } 
相關問題