C#下拉列表实现自动补全,我输入列表中部分内容就会列出相似的内容来供选择:
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#下拉列表实现自动补全,我输入列表中部分内容就会列出相似的内容来供选择:相关的知识,希望对你有一定的参考价值。
我的代码只能实现列表项中输入第一个字找相关,第二个以后的就不行:
如列表值有,王老五,李小四,张三八
combox中输入张,光标会跳到张三八这项,可是如果输入“三”刚没反应...大侠出招吧!
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
comboBox1.Items.Add(dr["code".ToString()]);
dr.Close();
this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
还有就是有多项的时候,这个AutoCompleteSource不会自行排到前面:
奈何这个姓江的就不上来呢?
很明确的告诉你,是可以做的.使用ComboBox控件就可以了,简单说一下:
首先设置属性DropDownStyle为DropDown
其次设置AutoCompleteCustomeSource
再设置AutoCompleteMode为Suggest或SuggesAppend
再设置AutoCompleteSource为CustomeSource
就可以了,该控件不光可以实现这样的效果还可以自定义实现更为复杂的autocomplete效果
TxextBox也有该功能,区别在于ComboBox限定了输入值.
AutoCompleteCustomeSource用的是默认设置:集合,不知道什么意思,没改;AutoCompleteSource设置为我上面的那个列表项ListItems就可以了。.
最后一句ComboBox限定的输入值是什么意思??
集合,表明你要自动匹配的数据.这个可以必须填写也可以绑定.
ComboBox限定的输入值说的意思是你只能在下接框中选择(或输入同下拉框一样的)
限定输入明白了,你提出来的跟你贴出来的效果是一样的,输入头一个字条是会出现相匹配的,可是如果只输入第二个字条,如图我输入的是“智”则匹配失败,有什么解决方法没?
追答如果仅是匹配LISTITEM里面的的话,可以直接指定Autocompletesource为LISTITE
匹配不上来是因为,已经有一个默认匹配了,你可以使用键盘上下选择.
比如你输入江
就会默认给你选择江智山,如果还有江智勇什么的.你输入江智也可能只会出现江智山,因为已经匹配了,可以按键盘上下选择,
如果要更一步定制行为,你可以尝试使用自定义的数据源和代码编写指定匹配规则
winform不做了是什么意思?过时了?我做些公司内部小工具,不用winform你建议用什么好?
追答我是说我好久没有开发winform了,现在的web比较流行,社会需求量大,但是各有优点。看你怎么看待了
参考技术B TIMER控件实时监控,在调用数据库输入的时候用正则表达式判断检索,嗯,差不多是这样。追问用正则是可以的,就是我不知道怎么用...
C# 学习笔记(16)ComboBox下拉列表框宽度自适应
C# 学习笔记(16)ComboBox下拉列表框宽度自适应
当下拉列表框中内容宽度大于下拉列表框宽度时
下拉列表框不能将内容全部显示出来
可以在下拉时,对下拉列表框内容进行重绘
/// <summary>
/// 列表项下拉窗口宽度自适应
/// </summary>
/// <param name="comboBox"></param>
private void AdjustComboBoxDropDownListWidth(object comboBox)
{
Graphics g = null;
Font font = null;
try
{
ComboBox senderComboBox = null;
if (comboBox is ComboBox)
senderComboBox = (ComboBox)comboBox;
else if (comboBox is ToolStripComboBox)
senderComboBox = ((ToolStripComboBox)comboBox).ComboBox;
else
return;
int width = senderComboBox.Width;
g = senderComboBox.CreateGraphics();
font = senderComboBox.Font;
//checks if a scrollbar will be displayed.
//If yes, then get its width to adjust the size of the drop down list.
int vertScrollBarWidth =
(senderComboBox.Items.Count > senderComboBox.MaxDropDownItems)
? SystemInformation.VerticalScrollBarWidth : 0;
int newWidth;
foreach (object s in senderComboBox.Items) //Loop through list items and check size of each items.
{
if (s != null)
{
newWidth = (int)g.MeasureString(s.ToString().Trim(), font).Width
+ vertScrollBarWidth;
if (width < newWidth)
width = newWidth; //set the width of the drop down list to the width of the largest item.
}
}
senderComboBox.DropDownWidth = width;
}
catch
{ }
finally
{
if (g != null)
g.Dispose();
}
}
private void comboBox1_DropDown(object sender, EventArgs e)
{
AdjustComboBoxDropDownListWidth(comboBox1);
}
以上是关于C#下拉列表实现自动补全,我输入列表中部分内容就会列出相似的内容来供选择:的主要内容,如果未能解决你的问题,请参考以下文章