如何在 WinForms 中将字典绑定到 ListBox
Posted
技术标签:
【中文标题】如何在 WinForms 中将字典绑定到 ListBox【英文标题】:How to bind Dictionary to ListBox in WinForms 【发布时间】:2010-12-03 04:20:42 【问题描述】:可以将 Dictionary 绑定到 Listbox,在 Listbox 和成员属性之间保持同步吗?
【问题讨论】:
【参考方案1】:var choices = new Dictionary<string, string>();
choices["A"] = "Arthur";
choices["F"] = "Ford";
choices["T"] = "Trillian";
choices["Z"] = "Zaphod";
listBox1.DataSource = new BindingSource(choices, null);
listBox1.DisplayMember = "Value";
listBox1.ValueMember = "Key";
(无耻地摘自我自己的博客:Bind a ComboBox to a generic Dictionary。)
这意味着您可以使用 SelectedValue 来获取列表框中所选项目的相应字典键。
【讨论】:
那里真的需要BindingSource
吗?
是的,根据我的经验,它需要 BindingSource。
是的,如果您事后修改基础字典,我不确定您是否会使其工作。字典不会像 BindingList label1.Text= listBox1.SelectedIndex.ToString();
if ( listBox1.SelectedItem is KeyValuePair<int,DockStyle>)
var temp1 = (KeyValuePair<int, DockStyle>)listBox1.SelectedItem;
label3.Text = temp1.Key.ToString();
label4.Text = temp1.Value.ToString();
【讨论】:
我知道这不是问题的匹配答案,但是当我需要在绑定后获取所选项目时,这很有帮助【参考方案3】:我认为您可以为此使用事件。每当 ListBox 发生变化时,eventHandler 方法都会从 Dictionary 中添加/删除相同的内容。
【讨论】:
以上是关于如何在 WinForms 中将字典绑定到 ListBox的主要内容,如果未能解决你的问题,请参考以下文章
在 WinForms 中将 Listbox 绑定到 List<object>
winForms + DataGridView 绑定到 List<T>
如何在winforms的datagridview中将字符串排序为数字