我有 datagridview 和带有单元格 DataGridViewComboboxCell 的列。DisplayStyle 设置为 Nothing。当我开始在此单元格中输入时,其样式会更改为组合框。而且我无法提供我的 tekst,因为根据我提供的文本进行单元格搜索项。我想将其样式更改为组合框列表,因为它在组合框中。我有一个空白字段,我可以在其中输入我的文本。可以在组合框中执行此操作吗?
谢谢
我有 datagridview 和带有单元格 DataGridViewComboboxCell 的列。DisplayStyle 设置为 Nothing。当我开始在此单元格中输入时,其样式会更改为组合框。而且我无法提供我的 tekst,因为根据我提供的文本进行单元格搜索项。我想将其样式更改为组合框列表,因为它在组合框中。我有一个空白字段,我可以在其中输入我的文本。可以在组合框中执行此操作吗?
谢谢
你可以试试这样..
public void ComboList1()
{
DataGridViewComboBoxColumn combo1 = new DataGridViewComboBoxColumn();
combo1.HeaderText = "Country";
combo1.Items.Add("Antarctica");
combo1.Items.Add("Belgium");
combo1.Items.Add("Canada");
combo1.Items.Add("Finland");
combo1.Items.Add("Albania");
combo1.Items.Add("India");
combo1.Items.Add("Barbados");
dataGridView1.Columns.Add(combo1);
}
public void ComboList2()
{
DataGridViewComboBoxColumn combo2 = new DataGridViewComboBoxColumn();
combo2.HeaderText = "Types of Jobs";
combo2.Items.Add("Accounting");
combo2.Items.Add("HR");
combo2.Items.Add("Finance");
combo2.Items.Add("Transportation");
combo2.Items.Add("Testing");
dataGridView1.Columns.Add(combo2);
}
从表单构造函数调用这两个方法。
现在单击 DataGridView 并生成 EditingControlShowing 事件并在其中编写以下代码:
if (e.Control is DataGridViewComboBoxEditingControl)
{
((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;
((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems;
((ComboBox)e.Control).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
}
或尝试这样
private string[] list;
private DataSet ds;
public frmMain()
{
InitializeComponent();
ds = this.GetDataSet("SELECT deptName from empDept", "empDept");
list = new string[ds.Tables[0].Rows.Count];
comboBox1.AutoCompleteCustomSource.AddRange(list);
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
}
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is ComboBox)
{
ComboBox cb = e.Control as ComboBox;
cb.DropDownStyle = ComboBoxStyle.DropDown;
}
}