我需要在ReadOnly DataGrid(不幸地不是DataGridView)中雙擊單元格時處理該事件,但MouseDoubleClick事件不是被解僱。我怎樣才能讓事件火起來?在System.Windows.Forms.DataGrid中雙擊單元格時,未觸發MouseDoubleClick事件
我創建的DataGrid和訂閱事件:
var table = new DataTable();
table.Columns.Add("foo");
table.Rows.Add(new object[] { "foo" });
table.Rows.Add(new object[] { "foo" });
dataGrid1.DataSource = table;
dataGrid1.MouseDoubleClick += DataGrid1_MouseDoubleClick;
dataGrid1.ReadOnly = true;
時,只有當我雙擊單元格之間的邊界。當我點擊細胞上的只讀文本框看起來這似乎吃第二次點擊事件:
我發現an old thread in Experts Exchange,他們說的那樣多:
好,不僅是點擊單元格時,雙擊事件不會被捕獲,它不會被數據網格消息隊列捕獲。我繼承了一個datagrid並重寫了wndproc,檢查是否可以檢測到雙擊。它捕獲點擊消息,但沒有WM_LBUTTONDBLCLK消息通過。我懷疑MS有子單元格控件(請參閱DataGridColumnStyle類和派生類)掛鉤網格控件,並阻止消息甚至繼續到網格。試圖預先鉤住那個孩子或網格可能會有非常混亂的結果,所以我正在避免這種情況。
我並不真的需要TextBox控件所以如果從「激活」或顯示其抑制細胞的一種方式,這將是對我來說是足夠好的解決方案,以及。
注意:我知道DataGrid已經過時,但我正在處理遺留代碼,請不要評論告訴我使用DataGridView - 它不會幫助我。
你能在一個細胞,而不是雙擊處理簡單的單擊事件? – Nofuzy
如果你不需要網格激活,你可以在頂部放一個透明的控件來捕捉鼠標點擊? – Equalsk
@Equalsk有趣的想法。控件必須隨着Grid一起調整大小,但也許我可以通過錨定實現。它必須在單元格之上,因爲我確實希望能夠單擊標題行 - 調整列寬的大小,並更改排序。 – sashoalm