本文轉載:http://www.cnblogs.com/Johnny_Z/archive/2012/02/12/2348235.html
Winform中的DataGridView數據綁定控件有時會用到ComboBox列,想要顯示ComboBox列的內容需要點擊兩到三次才可以。這使操作變得很麻煩,降低了易用性,尤其是在程序部署在一些小型設備或者觸摸屏設備上時,則更為不便。下面介紹兩種方法解決這個問題。
首先,我們創建一個Windows應用程序,在窗體中拖拽一個DataGridView控件,命名為dataGridView。要確保該控件的“啟用編輯”選項勾選。下面我們動態創建列,以及添加一行數據。寫一個函數IniteDGV,在窗體Shown事件中調用函數。
private void IniteDGV() { DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn(); combo.HeaderText = "comboBox列"; combo.Name = "combo"; combo.Width = 80; combo.DataSource=(new string[] { "0", "1", "2" }); DataGridViewTextBoxColumn textbox = new DataGridViewTextBoxColumn(); textbox.HeaderText = "textbox列"; textbox.Name = "textbox"; textbox.Width = 100; dataGridView.Columns.AddRange(combo, textbox); DataGridViewRow row = new DataGridViewRow(); dataGridView.Rows.Add(row); if (dataGridView.Columns.Contains("combo") ) { row.Cells["combo"].Value = "0"; } }
好了,以上基本工作做完了,下面說其中一個方法。
方法一:
在DataGridView控件的CellClick事件中添加如下代碼:
CellClick事件 private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0 && e.ColumnIndex >= 0) { DataGridViewComboBoxColumn combo = dataGridView.Columns[e.ColumnIndex] as DataGridViewComboBoxColumn; if (combo != null) //如果該列是ComboBox列 { dataGridView.BeginEdit(false); //結束該列的編輯狀態 DataGridViewComboBoxEditingControl comboEdite = dataGridView.EditingControl as DataGridViewComboBoxEditingControl; if (comboEdite != null) { comboEdite.DroppedDown = true; //展現下拉列表 } } DataGridViewTextBoxColumn textbox = dataGridView.Columns[e.ColumnIndex] as DataGridViewTextBoxColumn; if (textbox != null) //如果該列是TextBox列 { dataGridView.BeginEdit(true); //開始編輯狀態 } } }
方法二:
在DataGridView的CellEnter事件中添加如下代碼:
CellEnter事件 private void dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e) { DataGridView dgv = sender as DataGridView; if (dgv != null) { if (dgv.Columns[e.ColumnIndex].Name == "combo" && dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn) { SendKeys.Send("{F4}"); //選中ComboBox列時,相當於按了鍵盤的F4鍵 } } }
