显示可编辑字典的最简单方法是什么?

时间:2010-05-09 19:45:21

标签: c# winforms dictionary

我有Dictionary<string, string>并希望让用户查看和编辑内容,可能会添加新条目。我该怎么做?

输入验证,处理源词典的动态更新并且看起来不错是一种奖励。

2 个答案:

答案 0 :(得分:3)

绝对最简单的解决方案是将数据转换为DataTable并将其与GridView绑定。

DataTables支持您想要的所有数据绑定支持,并允许您添加和删除行。

用户完成后,您可以再次将数据表的内容复制到字典中。

天真而肮脏,但它会完成工作。

Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("foo", "bar");

//translate and bind
DataTable dt = new DataTable();
dt.Columns.Add("Key", typeof(string));
dt.Columns.Add("Value", typeof(string));
dict
    .ToList()
    .ForEach(kvp => dt.Rows.Add(new object [] {kvp.Key,kvp.Value}));

//allows you to add uniqueness constraint to the key column :-)
dt.Constraints.Add("keyconstraint", dt.Columns[0], true);

myDataGridView.DataSource = dt;

转回dict:

Dictionary<string, string> dict = new Dictionary<string, string>();
DataTable dt = (DataTable)myDataGridView.DataSource;
dt.AsEnumerable()
    .ToList()
    .ForEach(row => dict.Add(row[0] as string, row[1] as string));

答案 1 :(得分:0)

有很多方法可以显示像字典这样的数据结构,所有这些方法都取决于所使用的技术和您希望为UI提供的布局。
我认为网格是最简单的网格,但您也可以尝试其他控件 如果您想要增强用户体验并建立良好的用户界面,我建议您学习WPF:使用该技术,您可以为数据结构提供布局,并轻松进行更改,直到获得最佳结果。