我有兩個DataGridView
事件。我有一個問題,當我雙擊一個單元格時,事件即cell click
和cell double click
事件都被調用。請給我回答爲什麼發生這種情況和最新的解決方案。數據網格視圖中的單元格雙擊事件
謝謝
我有兩個DataGridView
事件。我有一個問題,當我雙擊一個單元格時,事件即cell click
和cell double click
事件都被調用。請給我回答爲什麼發生這種情況和最新的解決方案。數據網格視圖中的單元格雙擊事件
謝謝
顯然是沒有辦法,只是通過在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
}
謝謝你的回覆,但我想停止單元格單擊事件,當單元格雙擊invocked時調用 – AhmedShawky
@ user1835772好的,但我不認爲有辦法做到這一點。爲什麼這會是一個問題?這工作正如你想要的。你試過了嗎? –
是的,但我發現單元格點擊調用 – AhmedShawky
它與Windows的問題。據我所知,他們沒有添加任何特殊的東西來處理它。
您可以處理此 -
的時間量設置的時間應等於系統的雙擊時間(用戶可以在控制面板中指定)。它可從System.Windows.Forms.SystemInformation.DoubleClickTime
獲得。
結帳這個MSDN鏈路here
非常感謝我會嘗試這個 – AhmedShawky
可以使用電網的RowHeaderMouseClick事件
private void dgv_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
}
我不知道如何使用,但我認爲可以使用'hook'和'unhook'解決。或者'定時器'。 –
請參閱此鏈接。 http://stackoverflow.com/questions/4252735/double-click-to-windows-form-in-c-sharp 希望這個hepls :) –