首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

问高手一个有关问题,关于combobox

2012-04-07 
问高手一个问题,关于combobox目前我要实现一个功能,类似于google搜索的查询功能。在combobox里输入的时候,

问高手一个问题,关于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应用
[解决办法]
探讨
combobox是dropdown样式

this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;

[解决办法]
这个是窗体程序还是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做过类似的效果
[解决办法]
探讨
引用:
combobox是dropdown样式

this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;


引用:
这个功能我看到了,不过需要配合下拉框的内容也就是下拉框要把匹配的第一个选项高亮显示或者放在可以见到的部分的第一项。不知道该怎么做。


这个可能需要自定义控件了吧?

[解决办法]
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

热点排行