1

我们有一个带有 AutoCompleteMode = SuggestAppend 和 AutoCompleteSource = ListItems 的组合框(下拉样式)。

每当我们打开下拉列表然后开始在组合框的文本字段部分中写入时,sugest 框会覆盖所有下拉值的列表,但下拉值列表仍然保持焦点,我们无法选择 sugest 框中的任何项目.

这是一个非常烦人的行为,我希望这不是它的默认行为。其他人有同样的问题,并发现如何预防?

4

1 回答 1

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();
    }
于 2012-12-01T06:05:08.153 回答