我们有一个ComboBox(下拉样式),其中包含AutoCompleteMode = SuggestAppend和AutoCompleteSource = ListItems。
每当我们打开下拉列表然后开始在组合框的文本字段部分写入时,sugest框覆盖所有下拉列表的列表,但下拉值列表仍然保持焦点,我们无法选择任何项目最大的盒子。
这是一种非常讨厌的行为,我希望这不是它的默认行为。其他人有同样的问题,并发现如何防止它?
答案 0 :(得分:1)
您使用的是AutoCompleteMode属性。您的问题是建议框包含列表下拉列表。这是自动完成的另一种方法。
//ComboBox TextChanged Event
private void txtName1_TextChanged(object sender, EventArgs e)
{
SqlDataAdapter daTemp = new SqlDataAdapter("select Name from Names where Name like '" + txtName1.Text + "%'", strConnection);
DataTable dtTemp = new DataTable();
daTemp.Fill(dtTemp);
MessageBox.Show(dtTemp.Rows.Count.ToString());
String[] Names = new String[dtTemp.Rows.Count + 1];
if (dtTemp.Rows.Count > 0)
{
for (int x = 0; x <= dtTemp.Rows.Count - 1; x++)
{
Names[x] = dtTemp.Rows[x][0].ToString();
}
}
else
{
MessageBox.Show("Data not found");
}
contextMenuStrip1.Items.Clear();
for (int y = 0; y <= dtTemp.Rows.Count - 1; y++)
{
//Set The Desired Location (e.g. Besides of ComboBox) Of ContextMenuStrip
contextMenuStrip1.Left = 80;
contextMenuStrip1.Top = 90;
contextMenuStrip1.Items.Add(Names[y].ToString());
contextMenuStrip1.Visible = true;
}
}
同样的事情可以应用于DropDownLost。现在,您从ContextMenuStrip中选择适当的值,并将其提供给您的ComboBox(或DropDownList)。 为此,请将以下代码添加到ContextMenuStrip的ItemClicked事件中。
private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
txtName1.Text = e.ClickedItem.ToString();
}