C# WinForms组合框下拉列表和自动完成窗口都会出现
我在winforms应用程序上有一个带有以下代码的组合框:C# WinForms组合框下拉列表和自动完成窗口都会出现,c#,winforms,combobox,autocomplete,C#,Winforms,Combobox,Autocomplete,我在winforms应用程序上有一个带有以下代码的组合框: comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems; DataTable t = new DataTable(); t.Columns.Add("ID", typeof(int)); t.Columns.Add("Display", typeof(
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
DataTable t = new DataTable();
t.Columns.Add("ID", typeof(int));
t.Columns.Add("Display", typeof(string));
for (int i = 1; i < 2000; i++)
{
t.Rows.Add(i, i.ToString("N0"));
}
comboBox1.DataSource = t;
comboBox1.ValueMember = "ID";
comboBox1.DisplayMember = "Display";
comboBox1.AutoCompleteMode=AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource=AutoCompleteSource.ListItems;
DataTable t=新的DataTable();
t、 添加(“ID”,typeof(int));
t、 添加(“显示”,类型(字符串));
对于(int i=1;i<2000;i++)
{
t、 添加(i,i.ToString(“N0”));
}
comboBox1.DataSource=t;
comboBox1.ValueMember=“ID”;
comboBox1.DisplayMember=“显示”;
然后,当窗口打开时,我执行以下步骤:
组合框
下拉按钮——这将显示项目列表并选择组合框中的文本
组合框中的错误吗?如果有必要的话,我正在使用Windows7。我配置的组合框是否有误
还要注意,使用键盘时使用“自动完成”下拉列表。因此,上/下箭头键使用前窗口,而鼠标使用后窗口
这很奇怪。你的代码在我看来很好,我多次使用自动完成功能a,但它没有显示下拉列表和自动完成列表
我的建议是
- 在显示/值成员之后设置数据源。我不记得为什么了,但另一个引起了一些问题
comboBox1.ValueMember = "ID";
comboBox1.DisplayMember = "Display";
comboBox1.DataSource = t;
- 在代码末尾设置AutoCompleteSource(添加DataSouce后)
也许这会有帮助。只需从PropertyGrid设置属性,就可以获得复制。在Win7和Windows XP中都以这种方式运行
这是本文中记录的破坏行为。如前所述,微软没有考虑修复。一种可能的解决方法是在下拉事件处理程序中禁用自动完成,然后在DropDownClosed事件处理程序中重新启用它。若要一次只打开一个,可以使用comboBox1。Droppeddown=true打开常规的,false则自动完成将只显示在/a按键事件中
Dim box As ComboBox = sender
box.DroppedDown = False
我是一名巴西利亚编码专业的学生,为了在我的项目中修复它,我浪费了很多时间。在这里,我在几秒钟内就看到了
我的代码如下所示:
private void populateCombos()
{
persist.ShowLst(dspMember, vlMember,varTable,lstBox,varWhere);
persist.ShowLst(dspMember, vlMember,varTable,ddlist1,varWhere);
persist.ShowLst(dspMember, vlMember,varTable, ddlist2,varWhere);
ddList1.Text = null;
ddList2.Text = null;
lstBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
lstBox.AutoCompleteSource = AutoCompleteSource.ListItems;
lstBox.Text = null;
}
您只需在集合中添加项
现在选择组合框的属性选项
AutoCompleteSource=ListItems
自动完成模式=建议
注意:根据您的要求,自动完成源代码有许多选项:)WinForms ComboBox下拉列表…答案是…
在comboBox1输入事件中写入以下代码
private void comboBox1_Enter(object sender, EventArgs e)
{
comboBox1.DroppedDown = true;
}
现在,对于comboBox1自动完成…
在页面加载事件中写入此AutoComplete()
。这样它就可以工作了
public void AutoComplete()
{
try
{
MySqlConnection conn = new
MySqlConnection("server=localhost;database=databasename;user
id=root;password=;charset=utf8;");
MySqlCommand cmd = new MySqlCommand("select distinct
(columnName) from tablename", conn);
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(ds, "tablename");
AutoCompleteStringCollection col = new
AutoCompleteStringCollection();
int i = 0;
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
col.Add(ds.Tables[0].Rows[i]["columnName"].ToString());
}
comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
comboBox1.AutoCompleteCustomSource = col;
comboBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
public void自动完成()
{
尝试
{
MySqlConnection conn=新建
MySqlConnection(“server=localhost;database=databasename;user
id=root;password=;charset=utf8;“”;
MySqlCommand cmd=新的MySqlCommand(“选择不同的
(columnName)摘自tablename(康涅狄格州);
数据集ds=新数据集();
MySqlDataAdapter da=新的MySqlDataAdapter(cmd);
da.填写(ds,“表格名称”);
AutoCompleteStringCollection col=new
AutoCompleteTestringCollection();
int i=0;
对于(i=0;i向您的组合框添加一行代码
KeyDown
事件,问题就解决了
private void comboBox_NameAndID_KeyDown(object sender, KeyEventArgs e)
{
comboBox_NameAndID.DroppedDown = false;
}
从设计视图中选择组合框,并将“无”设置为“自动完成模式”属性。从设计视图中选择组合框并设置“附加”对于AutoCompleteMode属性,这将在不显示窗口的情况下建议该项目。这些更改没有任何影响。您是否能够复制该问题?如果没有,您使用的是什么操作系统?谢谢!这有什么问题?他们只是想让您两全其美!!有一个简单而有效的解决方法。但是自从所以告诉我不要回答评论中的问题,我不会。但我确实在下面回答了它…作为回答。我讨厌看到人们来寻找答案,看看这个问题的公认答案——这并不能真正解决他们的问题——然后不回答就离开。在你成为这些人中的一员之前,看看你的答案这个问题是我的名字…它真的可以轻松彻底地解决这个问题。请查看@JoeGayetty的答案。如果microsoft不考虑解决问题。人们用什么来代替那个有缺陷的datagridview?你在接受的答案下的评论吸引了我的注意力。谢谢。它真的解决了问题。非常感谢你的回答和评论,它解决了我很久以来遇到的一个问题。。。