解法來源:
AutoComplete ComboBox in DataGridView using C#.net Windows Application
需求:
DataGridView 的下拉選單欄位,可使用自動完成功能
問題:
遭遇 DataGridViewComboBoxColumn 沒有 ComboBoxStyle.DropDown 等屬性可設定的問題,
也無法轉型為 ComboBox 或 DataGridViewComboBoxEditingControl
解決方式:
設定DataGridView 的 EditingControlShowing 事件
疑問:
為什麼 DataGridViewComboBoxColumn 無法強制轉型為 DataGridViewComboBoxEditingControl,
卻可以用 is DataGridViewComboBoxEditingControl 判斷後強轉為 ComboBox?
※註
DataGridViewComboBoxColumn 繼承自 DataGridViewColumn
DataGridViewComboBoxEditingControl 繼承自 ComboBox
AutoComplete ComboBox in DataGridView using C#.net Windows Application
需求:
DataGridView 的下拉選單欄位,可使用自動完成功能
問題:
遭遇 DataGridViewComboBoxColumn 沒有 ComboBoxStyle.DropDown 等屬性可設定的問題,
也無法轉型為 ComboBox 或 DataGridViewComboBoxEditingControl
解決方式:
設定DataGridView 的 EditingControlShowing 事件
private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewComboBoxEditingControl) { ((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown; ((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems; ((ComboBox)e.Control).AutoCompleteMode = AutoCompleteMode.SuggestAppend; } }
疑問:
為什麼 DataGridViewComboBoxColumn 無法強制轉型為 DataGridViewComboBoxEditingControl,
卻可以用 is DataGridViewComboBoxEditingControl 判斷後強轉為 ComboBox?
※註
DataGridViewComboBoxColumn 繼承自 DataGridViewColumn
public class DataGridViewComboBoxColumn : DataGridViewColumn { ... }
DataGridViewComboBoxEditingControl 繼承自 ComboBox
public class DataGridViewComboBoxEditingControl : ComboBox, IDataGridViewEditingControl { ... }
留言
張貼留言