[WinForm]为ComboBox绑定数据源并提供下拉提示

关键代码:

        /// <summary>
        ///  为ComboBox绑定数据源并提供下拉提示
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="combox">ComboBox</param>
        /// <param name="list">数据源</param>
        /// <param name="displayMember">显示字段</param>
        /// <param name="valueMember">隐式字段</param>
        /// <param name="displayText">下拉提示文字</param>
        public static void Bind<T>(this ComboBox combox, IList<T> list, string displayMember, string valueMember, string displayText)
        {
            AddItem(list, displayMember, displayText);
            combox.DataSource = list;
            combox.DisplayMember = displayMember;
            if (!string.IsNullOrEmpty(valueMember))
                combox.ValueMember = valueMember;
        }
        private static void AddItem<T>(IList<T> list, string displayMember, string displayText)
        {
            Object _obj = Activator.CreateInstance<T>();
            Type _type = _obj.GetType();
            if (!string.IsNullOrEmpty(displayMember))
            {
                PropertyInfo _displayProperty = _type.GetProperty(displayMember);
                _displayProperty.SetValue(_obj, displayText, null);
            }
            list.Insert(0, (T)_obj);
        }

使用示例:

        List<CommonEntity> Sources = new List<CommonEntity>();
        private void WinComboBoxToolV2Test_Load(object sender, EventArgs e)
        {
            CreateBindSource(5);
            comboBox1.Bind(Sources, "Name", "Age", "--请选择--");
        }

        private void CreateBindSource(int count)
        {
            for (int i = 0; i < count; i++)
            {
                CommonEntity _entity = new CommonEntity();
                _entity.Age = i;
                _entity.Name = string.Format("Yan{0}", i);
                Sources.Add(_entity);
            }
        }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }代码效果:

希望有所帮助!

[WinForm]为ComboBox绑定数据源并提供下拉提示

时间: 2024-10-26 22:56:28

[WinForm]为ComboBox绑定数据源并提供下拉提示的相关文章

WPF{ComboBox绑定类对象, 下拉列显示的值,与取到的值}

DisplayMemberPath 是用来显示下拉列表的值 SelectedValuePath是用来取得选中项的值. ComboBox绑定类对象, 下拉列显示的值,与取到的值 string. Join的作用 输出结果是

Winform ComboBox 绑定数据源 触发SelectedIndexChanged事件 处理办法

最近寫Winform程式,發現Winform中的ComboBox和Web中的Dropdown相差很大,在ComboBox 绑定数据源 會触发SelectedIndexChanged事件,很困擾,查找了資料,處理方法大體分為三種 1.添加一个标记位,在绑定前设置为false,绑定完成后设置回true(個人覺得用起來的很奇怪) void BindComboBox() { flag=false; ComboxBox1.ValueMember="ValueColumn"; ComboxBox1

.NET MVC easyUI中Combo Combobox绑定数据源的问题

这个问题我因为没有仔细看书,在网上查资料时看了好多.一直没遇到好的解决方法.经过同学提醒才解决了.问题不大,但是是新手比较头疼的吧.下面我把解决方案写一下. 前台: Emr_Doc_Emr_Info/Index1.aspx <td class="td-right1-color"> 科室:</td> <td style="width: 160px"> <input class="easyui-combobox&quo

Jquery ajax 绑定multiselect多选下拉选项,同时异步执行返回值

Jquery ajax 绑定multiselect多选下拉选项,同时异步执行获取返回值 1 function load(mslt_employees,belongto,mark) {//传入$(#ID) 2 var jsondata = JSON.stringify({ belongto: 1, username: username }); 3 var emp = null; 4 jQuery.ajax({ 5 type: 'POST', 6 url: "../tools/employees_a

PropertyGrid—为复杂属性提供下拉式编辑框和弹出式编辑框

零.引言 PropertyGrid中我们经常看到一些下拉式的编辑方式(Color属性)和弹出式编辑框(字体),这些都是为一些复杂的属性提供的编辑方式,本文主要说明如何实现这样的编辑方式. 一.为属性提供编辑类 弹出式和下拉式是如何实现的呢,这需要为属性提供一个专门的编辑类..Net为我们提供了一个System.Drawing.Design.UITypeEditor类,它是所有编辑类的基类,从他继承出了诸如ColorEditor.FontEditor的类,因此我们可以在属性框中编辑颜色和字体.定义

基于jQuery的input输入框下拉提示层(自动邮箱后缀名)

基于jQuery的input输入框下拉提示层,方便用户输入邮箱时的提示信息,需要的朋友可以参考下 效果图 // JavaScript Document (function($){ $.fn.extend({ "changeTips":function(value){ value = $.extend({ divTip:"" },value) var $this = $(this); var indexLi = 0; //点击document隐藏下拉层 $(docum

史上最全的搜索下拉提示用户交互研究——读《An Eye-tracking Study of User Interactions with Query Auto Completion》

        搜索下拉提示(Query Auto Completion,简称QAC)现在几乎是每个搜索引擎必备的基本功能,作用是在用户在搜索框输入查询词的过程中,给用户展示一系列搜索查询query供用户选择,可以方便用户输入.缩短用户搜索时间.提高用户搜索体验.在这方面的研究已经有很多,如基于上下文.基于时间序列等预测query的热度.个性化排序等,但关于用户如何与搜索下拉提示(下文简称QAC)交互的研究目前还是一个空白. 微软的Katja Hofmann前几天(11.3-11.7)刚刚填补了

百度搜索下拉提示框实现

最近在做百度IFE前端技术学院的题,然后有一题就是模拟百度搜索智能提示.题目是开源的,稍后给出地址. 因为博主没学过后端啊,欲哭无泪,所以不能实现后端模糊搜索,那如果前端ajax纯粹请求一份同样的数据,效果就不好. 机智的博主直接把百度搜索api借来一下. 直接从开发者工具,监控网络,找到请求地址. 百度api: 我把api缩减了一下,删除了大部分暂时用不上的参数. https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=abc&json=

jQuery 实现带下拉提示且自动填充的邮箱

<!-- 本文例子所引用的jQuery版本为 jQuery-1.8.3.min.js --> 本文用 jQuery 实现一个用户输入字符时出现能够提示邮箱后缀名的下拉菜单,并且在选择下拉菜单中的邮箱后缀名后可自动填充未完成的输入框,在做这个功能时候,我参考的是网易注册(http://reg.163.com/reg/reg.jsp?product=urs)中的邮箱栏目所实现的功能与效果.这个功能的目的是使用户在填写邮箱栏目的过程中,在带有邮箱后缀名的菜单的提示下,可以不需要完整输入自己的注册邮箱