public string[] data = new string[] { "广东省","东莞","张三|ZS", "李四|LS", "王五|WW", "赵六|ZL", "田七|TQ" };
private void Form1_Load(object sender, EventArgs e)
{
comAutoSelect.Items.AddRange(data);
comAutoSelect.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comAutoSelect.AutoCompleteSource = AutoCompleteSource.ListItems;
}
private void comAutoSelect_TextUpdate(object sender, EventArgs e)
{
var input = comAutoSelect.Text.ToUpper();
comAutoSelect.Items.Clear();
if (input.Trim() == "") comAutoSelect.Items.AddRange(data);
else
{
List<string> newList = new List<string>();
for (int i = 0; i < data.Length; i++)
{
if (data[i].IndexOf(input) != -1)
{
newList.Add(data[i]);
}
}
comAutoSelect.Items.AddRange(newList.ToArray());
}
comAutoSelect.Select(comAutoSelect.Text.Length, 0);
comAutoSelect.DroppedDown = true;
//保持鼠标指针形状
Cursor = Cursors.Default;
}
问题:如果我想输入广西,但当我输入“广”时,系统会自动填充“东省”,西字便无法输入。请问如何解决?
你直接不可以手输不就完了,让他只可以下拉框里面选
不能输入是由于 private void comAutoSelect_TextUpdate(object sender, EventArgs e)这个引起的。
正常的输入“广”会自动填充“东省”,但是依然可以继续输入西字。
你可以注释掉 private void comAutoSelect_TextUpdate(object sender, EventArgs e)这个事件,再测试一下。
this_comboBox.setSelectedIndex(-1); //设置不选中任何选项
comboBox_textField.setText(text); //文本框设置输入文本
在处理的最后将选中的Index设为-1,即不选中任何项,同时将实际输入的文本再覆盖一遍