2011-06-14 68 views
19

如何避免雙擊DataGridView內使用的DropDownButton?現在,我可以通過點擊兩次或更多次來查看DataGridView中的下拉項目。第一次選擇單元格,第二次單擊DropDownButton箭頭時,它顯示列表。我怎樣才能在一個單一的點擊實現相同?單擊即可打開下拉菜單(在datagrid視圖中)

+0

您能詳細說明您想要實現的嗎? – V4Vendetta 2011-06-14 10:52:37

+0

@ V4Vendetta,我已經更新了描述。請檢查。 – NewBie 2011-06-14 10:55:27

+0

您可能需要檢查[此解決方案。](http://stackoverflow.com/questions/34543940/datagridviewcomboboxcolumn-doesnt-open-the-dropdown-on-first-click/39757746#39757746) – TaW 2016-09-28 21:18:26

回答

15

您可以通過訂閱的EditingControlShowing事件網格類型ComboBox

ComboBox ctl = e.Control as ComboBox; 
ctl.Enter -= new EventHandler(ctl_Enter); 
ctl.Enter += new EventHandler(ctl_Enter); 

而且在輸入事件的控制實現這一點,在那裏,使用屬性

void ctl_Enter(object sender, EventArgs e) 
{ 
    (sender as ComboBox).DroppedDown = true; 
} 

DroppedDown表示爲該名稱表明是否顯示下拉區域,所以無論何時輸入控件,都會將其設置爲true並顯示項目,而無需進一步點擊。

+0

我需要顯示點擊datagrid單元本身的dropitems。這沒有區別。 – NewBie 2011-06-14 11:21:13

+12

你可以設置DataGridView EditMode ='DataGridViewEditMode.EditOnEnter' – V4Vendetta 2011-06-14 11:23:24

+0

那樣做的工作。我只設置EditMode = EditOnEnter屬性,現在工作。謝謝。 – NewBie 2011-06-14 11:35:42

17

設置DataGridViewEditOnEnterEditMode屬性:link

DataGridView.EditMode - 獲取或設置指示如何開始編輯單元格的值。

EditOnEnter - 當細胞獲得焦點時編輯開始。

6

「將DataGridView的EditMode屬性設置爲EditOnEnter」爲我工作,但我發現了另一個問題:用戶無法通過選擇並按下DEL鍵來刪除行。所以,谷歌搜索給了我另一種方式來做到這一點。正好趕上事件CellEnter並檢查電池是撥款類型,像這樣的示例代碼執行撥款操作:

private void Form_OnLoad(object sender, EventArgs e){ 
    dgvArmazem.CellEnter += new DataGridViewCellEventHandler(dgvArmazem_CellEnter); 
} 

void dgvArmazem_CellEnter(object sender, DataGridViewCellEventArgs e) 
     { 
      DataGridView dg = (DataGridView)sender; 

      if (dg.CurrentCell.EditType == typeof(DataGridViewComboBoxEditingControl)) 
      { 
       SendKeys.Send("{F4}"); 
      } 
     } 

現在組合框下拉速度更快,用戶仍然通過選擇行並按下DEL刪除一行鍵。

就是這樣。

+0

我體驗了這種有趣的行爲 - 第一次點擊展開了Dropbox,選擇了第一個項目,並立即關閉了Dropbox。我需要再次點擊才能真正做出我的選擇。 – valsidalv 2013-12-03 20:28:13