我们有一个带有 AutoCompleteMode = SuggestAppend 和 AutoCompleteSource = ListItems 的组合框(下拉样式)。
每当我们打开下拉列表然后开始在组合框的文本字段部分中写入时,sugest 框会覆盖所有下拉值的列表,但下拉值列表仍然保持焦点,我们无法选择 sugest 框中的任何项目.
这是一个非常烦人的行为,我希望这不是它的默认行为。其他人有同样的问题,并发现如何预防?
您正在使用 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();
}