日期:2014-05-18  浏览次数:20836 次

WinForm TextBox 自动完成
强调一下,是WinForm,不是asp.net

设置了 TextBox 的 AutoCompleteMode 为 SuggestAppend,AutoCompleteSource 为 CustomSource,并且为AutoCompleteCustomSource 添加了数据源

但是这个 TextBox 必须输入至少一个字符之后才显示建议的下拉框
我希望在 TextBox 得到焦点时就显示下拉框,应该怎么做?

------解决方案--------------------
反正我没见到这样的程序,没有输入任何内容就给自动完成提示的。

你可以使用ComboBox,比如类似IE地址栏,既允许自动完成,也允许下拉。
------解决方案--------------------
增加一个focus事件就要以了
------解决方案--------------------
有个笨办法,是在wince下用的,下面有写一个listbox,平时隐藏,到上面的text有焦点就显示,失去焦点就隐藏.
------解决方案--------------------
private void comboName_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z || e.KeyCode == Keys.Back)
{
if (comboName.Text.Length > 0)
{
string oldstring = comboName.Text;
string sql = "select ProId, 商品名 + ' ' + 厂家 + ' ' + 规格 as cc from pro where 简码 like '%" + comboName.Text.Trim() + "%' or 商品名 like '%" + comboName.Text.Trim() + "%'";
AccessHelp ah = new AccessHelp();
this.comboName.DataSource = ah.select(sql).Tables[0];
comboName.DisplayMember = "cc";
comboName.ValueMember = "ProId";
comboName.DroppedDown = true;
comboName.Text = oldstring;
comboName.Select(oldstring.Length, 0);
}
}
}






给点分吧。。。
------解决方案--------------------
我用的combobox 如果你非要用textbox 也行 ,把combobox 隐藏到textbox后面,如何获取值就不用说了吧