问高手一个问题,关于combobox
目前我要实现一个功能,类似于google搜索的查询功能。在combobox里输入的时候,下拉框拉下,并且被选中的项目是与输入的字符前端匹配的index最小的一个项目,但是不可以改变combobox的输入框中的内容,也就是允许用户连续输入多个字符,每输入一个字符的时候匹配一次。如果没有匹配成功的则下拉框不拉下。
谢谢!
[解决办法]
combobox 自己好像有一个autocompulate功能吧。。。
[解决办法]
combobox是dropdown样式
this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
[解决办法]
可以设置combobox的AutoCompleteMode属性和AutoCompleteSource属性来实现。
- C# code
this.comboBox1.Items.Clear(); this.comboBox1.Items.Add("哈尔滨"); this.comboBox1.Items.Add("大庆"); this.comboBox1.Items.Add("大小"); this.comboBox1.Items.Add("长沙"); this.comboBox1.Items.Add("武汉"); this.comboBox1.Items.Add("上海"); this.comboBox1.Items.Add("北京"); this.comboBox1.Items.Add("大连"); this.comboBox1.Items.Add("汉口"); this.comboBox1.Items.Add("成都"); this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
[解决办法]
简单的ajax应用
[解决办法]
[解决办法]
这个是窗体程序还是WEB程序
[解决办法]
需要重新包装comboBox了。
[解决办法]
winForm还是webForm?
winForm有个AutoCompleteMode 属性
webform就要自己搞了(自动完成功能),或是用asp.net ajax里边有个现成的控件
[解决办法]
http://www.cnblogs.com/JeffreyZhao/archive/2007/06/12/StyleAutoComplete.html
[解决办法]
恩,就自带的combox控件只能支持到下拉功能,如果还需要排序的话,就需要自己进行开发新的控件了·
[解决办法]
http://www.cnblogs.com/JeffreyZhao/archive/2007/06/12/StyleAutoComplete.html
[解决办法]
不知道怎么做,只有顶一下。
[解决办法]
ComBox不支持只支持输自己Items里面有的,如果你输英文出来中文的话不行的
在ComBoBox的TextChange事件里面写,根据输入的拼音或者汉字来找匹配对应内容,然后重新设置ComBoBox的数据源
最好自己定义一个ComBoBox控件,把这些都封装起来
我只是用TextBox+ListView做过类似的效果
[解决办法]
[解决办法]
- C# code
/// <summary> /// 数据表 /// /// </summary> /// <summary> /// 可编辑选单列 /// 功能:可以手动输入选项 /// </summary> public class DataGridViewComboEditBoxColumn : DataGridViewComboBoxColumn { public DataGridViewComboEditBoxColumn() { DataGridViewComboEditBoxCell obj = new DataGridViewComboEditBoxCell(); this.CellTemplate = obj; } } public class DataGridViewComboEditBoxCell : DataGridViewComboBoxCell { public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) { base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); ComboBox comboBox = base.DataGridView.EditingControl as ComboBox; if (comboBox != null) { comboBox.DropDownStyle = ComboBoxStyle.DropDown; comboBox.AutoCompleteMode = AutoCompleteMode.Suggest; comboBox.Validating += new CancelEventHandler(comboBox_Validating); } } protected override object GetFormattedValue(object value, int rowIndex, ref DataGridViewCellStyle cellStyle, TypeConverter valueTypeConverter, TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context) { if (value != null) { if (value.ToString().Trim() != string.Empty) { if (Items.IndexOf(value) == -1) { Items.Add(value); DataGridViewComboBoxColumn col = OwningColumn as DataGridViewComboBoxColumn; col.Items.Add(value); } } } return base.GetFormattedValue(value, rowIndex, ref cellStyle, valueTypeConverter, formattedValueTypeConverter, context); } void comboBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) { DataGridViewComboBoxEditingControl cbo = sender as DataGridViewComboBoxEditingControl; if (cbo.Text.Trim() == string.Empty) return; DataGridView grid = cbo.EditingControlDataGridView; object value = cbo.Text; // 如果值选项不存在添加的值选项 if (cbo.Items.IndexOf(value) == -1) { DataGridViewComboBoxColumn cboCol = grid.Columns[grid.CurrentCell.ColumnIndex] as DataGridViewComboBoxColumn; // 必须同时添加到当前的组合框以及模板, 以避免重复的项 cbo.Items.Add(value); cboCol.Items.Add(value); grid.CurrentCell.Value = value; } } }
[解决办法]
up
[解决办法]
参考
参考
[解决办法]
其他我不懂,不过我知道google那个是用ajax做的
动态无刷新技术,正在学习ing