通过键入选择Windows窗体列表框中的项目?

时间:2017-01-06 13:12:37

标签: c# listbox windows-forms-designer

我有一个包含国家/地区名称的列表框。我在VS2015(C#)中使用Windows窗体 通过键入在listBox中选择名称时,它只允许一个字母。因此,如果我输入“A”,它将跳转到以“A”开头的第一个项目,但如果我按“As”,则列表框查看以“s”开头的项目。 我找到了这个组合框和文本框的答案:
  Selecting an item in comboBox by typing
但看起来像listbox不支持AutoCompleteMode。 有什么解决方案吗?

4 个答案:

答案 0 :(得分:1)

请考虑实施您自己的搜索方法。 ListBox不支持设计所需的功能。无论如何,您可以为TextBox准备一个TextChanged事件的方法,该方法在搜索集合中的结果时。

答案 1 :(得分:0)

答案 2 :(得分:0)

您应该使用带DropDownStyle.Simple的ComboBox。 ListBox从来没有打算拥有这个功能,强迫它这样做通常是浪费时间更好的花费。

您可能还想考虑第三方控件。例如,Telerik有DropDownList扩展了一个ComboBox,并使它完全按照你想要的方式做,并提供了如何做的选项。

答案 3 :(得分:0)

这是一些示例代码。将一个TextBox放在ListBox上方。适当地连接TextChanged事件,这应该模仿ComboBox的自动完成行为(例如)......

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        listBox1.Items.Add("Tom");
        listBox1.Items.Add("Dick");
        listBox1.Items.Add("Harry");
        listBox1.Items.Add("Henry");
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        TextBox oTextBox = (TextBox)sender;
        int iListIndex = oTextBox.TextLength == 0 ? -1 : listBox1.FindString(oTextBox.Text);
        listBox1.SelectedIndex = iListIndex;
    }
}