• C#中ComboBox动态绑定赋值


     http://www.crifan.com/csharp_combobox_data_dynamic_binding/

    C#中,已有一个List,想要动态的,绑定到ComboBox中。

    【解决过程】

    1.参考:

    c# winform comboBox动态绑定数据

    去试试代码:

    cmbSubCategory.DataSource = generalCategoryList;
    cmbSubCategory.DisplayMember = "name";
    cmbSubCategory.ValueMember = "url";
    结果是可以执行,但是点击combobox时,下来菜单是空的。

    2.参考:

    C# Binding Generic LIst<string> to Combo Box

    打算去试试。

    3.经过后来的折腾,找到原因了:

    【已搞懂】C#中代码加了断点,但是调试时却无法执行到

    4.然后此处,实际上是,之前的写法,就是正常的:

    public struct categoryItem
    {
    public string Name { get; set; }
    public string Url { get; set; }
    };
    List<categoryItem> generalCategoryList;

    private void initSearchCategory()
    {
    generalCategoryList = new List<categoryItem>();

    foreach (HtmlNode singleOptionNode in optionNodeList)
    {
    ......

    //store info
    categoryItem singleCategoryItem = new categoryItem();
    singleCategoryItem.Name = generalCategory;
    singleCategoryItem.Url = singleCategoryUrl;
    //add to list
    generalCategoryList.Add(singleCategoryItem);
    }

    if (generalCategoryList.Count > 0)
    {
    //init search category
    cmbSubCategory.DataSource = generalCategoryList;
    cmbSubCategory.DisplayMember = "name";
    cmbSubCategory.ValueMember = "url";
    }
    }
    然后ComboBox中就可以看到对应的选项了:

    【总结】

    绑定的动作,其实很简单:

    cmbSubCategory.DataSource = generalCategoryList;
    cmbSubCategory.DisplayMember = "name";
    cmbSubCategory.ValueMember = "url";
    就可以了。

    但是要注意:

    此处,如果改为:

    public struct categoryItem
    {
    public string name;
    public string url;
    };
    List<categoryItem> generalCategoryList;

    private void initSearchCategory()
    {
    generalCategoryList = new List<categoryItem>();

    foreach (HtmlNode singleOptionNode in optionNodeList)
    {
    ......

    //store info
    singleCategoryItem.name = generalCategory;
    singleCategoryItem.url = singleCategoryUrl;
    //add to list
    generalCategoryList.Add(singleCategoryItem);
    }

    if (generalCategoryList.Count > 0)
    {
    //init search category
    cmbSubCategory.DataSource = generalCategoryList;
    cmbSubCategory.DisplayMember = "name";
    cmbSubCategory.ValueMember = "url";
    }
    }
    那么结果就错了,然后每一项,就都是对应的对象的名字了:

    具体根本原因,暂时懒得去深究了。

  • 相关阅读:
    LoadRunne遇到的一些问题FAQ(持续更新...)
    LoadRunner11下载、安装与破解
    LoadRunner之录制你的第一个脚本
    appium+Linux环境安装配置
    appium-FAQ(持续更新...)
    appium启动运行log分析
    利用Unity3D与Oculus实现机器情绪安抚师的一种方案
    利用Unity3D实现多平台增强现实网络游戏的一种方案
    Ubuntu16.04安装NVIDIA驱动时的一些坑与解决方案
    你的计算机也可以看懂世界——十分钟跑起卷积神经网络(Windows+CPU)
  • 原文地址:https://www.cnblogs.com/Echo529/p/6382179.html
Copyright © 2020-2023  润新知