C# 我可以将字典中对象的属性显示为 ListControl.DisplayMember 吗?

标签 c# dictionary listcontrol

目的是将列表视为“名称”列表。

这是字典:

class Scripts
    {
        public Dictionary<int, Script> scripts = new Dictionary<int, Script>();
        ...
    }

这是我要查找的属性“名称”:

class Script
    {
        public string name { get; set; }
        ...
    }

问题是:

public partial class MainForm : Form
{
    Scripts allScripts;

    public MainForm()
    {
        InitializeComponent();
        allScripts = new Scripts();
        setupDataSources();
    }

    private void setupDataSources()
    {
        BindingSource ketchup = new BindingSource(allScripts.scripts, null);
        //THIS LINE:
        listBoxScripts.DisplayMember = allScripts.scripts["Key"].name.ToString();
        listBoxScripts.ValueMember = "Key";
        listBoxScripts.DataSource = ketchup;
    }
    ...
}

我只是想不出如何让那条线工作!非常感谢您的建议!

谢谢

最佳答案

您可以绑定(bind)到 Value 并覆盖 Script 类中的 ToString 方法。

private void setupDataSources()
{            
    BindingSource ketchup = new BindingSource(allScripts.scripts, null);
    listBoxScripts.DisplayMember = "Value";
    listBoxScripts.ValueMember = "Key";
    listBoxScripts.DataSource = ketchup;            
}

脚本类:

class Script
{
    public string name { get; set; }

    public override string ToString()
    {
        return name;
    }
}

关于C# 我可以将字典中对象的属性显示为 ListControl.DisplayMember 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15817739/

相关文章:

python-3.x - dict.keys() 返回 dict_keys 类 - 期望查看对象

c++ - 将项目添加到列表控件时 UI 卡住

c# - 如何让 Task.Delay 提前完成

c# - 在 C# 中打印整个数组

c# - 如何更改使用 MUST_CHANGE 选项创建的 SQL Server 中的登录密码

c# - 客户端 ID 和 secret

python - 许多矩阵的元素中位数,python pandas

javascript - 有离线词库吗?它应该可以通过 Node 应用程序进行搜索

c# 将数组分配给列表的更优雅的方法?