moh*_*eza 18 c# autocomplete winforms
我希望有一个文本框控件,用C#2008和LINQ在Windows应用程序中建议和附加数据库中的值.
我是用组合框做的,但我不能用文本框来做.
我该怎么做?
P.K*_*P.K 36
这可能不是最好的做事方式,但应该有效:
this.textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
this.textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
private void textBox1_TextChanged(object sender, EventArgs e)
{
TextBox t = sender as TextBox;
if (t != null)
{
//say you want to do a search when user types 3 or more chars
if (t.Text.Length >= 3)
{
//SuggestStrings will have the logic to return array of strings either from cache/db
string[] arr = SuggestStrings(t.Text);
AutoCompleteStringCollection collection = new AutoCompleteStringCollection();
collection.AddRange(arr);
this.textBox1.AutoCompleteCustomSource = collection;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Tho*_*que 11
看看AutoCompleteSource,AutoCompleteCustomSource和AutoCompleteMode属性.
textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection col = new AutoCompleteStringCollection();
col.Add("Foo");
col.Add("Bar");
textBox1.AutoCompleteCustomSource = col;
Run Code Online (Sandbox Code Playgroud)
请注意,设计师允许您在不编写任何代码的情况下执行此操作...
有两种方法可以实现这种文本框效果:
使用图形用户界面 (GUI);或使用代码
使用图形用户界面:
转到:“属性”选项卡;然后设置以下属性:
然而; 最好的方法是通过代码创建它。请参阅下面的示例。
AutoCompleteStringCollection sourceName = new AutoCompleteStringCollection();
foreach (string name in listNames)
{
sourceName.Add(name);
}
txtName.AutoCompleteCustomSource = sourceName;
txtName.AutoCompleteMode = AutoCompleteMode.Suggest;
txtName.AutoCompleteSource = AutoCompleteSource.CustomSource;
Run Code Online (Sandbox Code Playgroud)