“我每隔几个月就会在WinForms中写一些东西来提醒自己为什么讨厌它”(引自另一个操作)
我认为这会非常简单,但我很遗憾没有提出一些有效的代码。
我只想将DataGridView绑定到“ANY”方便的二维列表/集合/香蕉,
AND 以高效率高效(性能,延迟)更新该集合,以密钥访问第一维,将第二维更新为数据。理想情况下,我需要一个词典,但它不是“可绑定的”本身。
不用说,绑定集合的任何更改都应显示在DGV上。
问题示例
var g = this.dataGridView1;
var s = new Dictionary<string, string>();
s.Add("1", "Test1");
s.Add("2", "Test2");
s.Add("3", "Test3");
g.DataSource = s.ToArray();
这里的问题是toArray()转换使dgv绑定到数组而不是实际的字典。因此,不会在dgv上报告对dic的任何更改。
答案 0 :(得分:1)
为此,您必须实现ITypedList并创建表示每列的自定义PropertyDescriptor(通常将“key”或“index”保留为描述符中的字段)。然后重写GetValue和SetValue以从集合中获取值。
我有一个转换器的例子可能对设置上下文很有用 - 会看看我是否能找到它。
对于双向通知,您需要实现IBindingList和列表更改事件。