我有一个Dictionary<string, string>
,并希望让用户查看和编辑内容,可能会添加新的条目。我应该怎么做?显示可编辑词典的最简单方法是什么?
输入验证,处理源字典的动态更新,看起来不错,是一种奖励。
我有一个Dictionary<string, string>
,并希望让用户查看和编辑内容,可能会添加新的条目。我应该怎么做?显示可编辑词典的最简单方法是什么?
输入验证,处理源字典的动态更新,看起来不错,是一种奖励。
绝对最简单的解决方案是将数据表转换为数据表并将其绑定到该数据表。
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;
并将其转化回字典:
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));
显示字典等数据结构的方法很多,全部取决于所使用的技术以及要提供给UI的布局。
我认为网格是最简单的一个,但您也可以尝试其他控件。
如果您想提升用户体验并创建一个良好的用户界面,我建议您学习WPF:使用该技术,您可以对数据结构进行布局,并轻松进行更改,直至获得最佳结果。
我仅限于的WinForms,可悲。你能展示或链接到一个简单的代码示例吗? – mafu 2010-05-09 19:55:13
这里是一个例子,但是如果你google的话你可以找到很多的例子: http://www.dev102.com/2008/03/07/binding-a-wpf-control-to-a-dictionary/ – 2010-05-09 20:29:15