我正在编写一个用作Excel风格字典的程序。基本上,它允许用户添加行,编辑行,搜索行等等。我用它来存储和学习外语词汇。 我已经开始运行一个版本,我很满意。它使用BindingList作为DataGridView的数据源,以便跟踪更改并将它们记录回我用来存储所有词汇表的BindingList,列表本身由一个名为“Term”的自定义类组成,具有“英语单词”,“西班牙语单词”,“示例”等属性。它没有做的是让用户自定义字段,这就是我的问题所在。它几乎是“硬编码”的,即使我正在学习西班牙语或法语,Term类将会使用来自日语的“汉字”的财产。
我希望能够让用户输入他们希望字典显示和跟踪的字段 - 基本上,他们应该能够重命名并添加/删除DataGridView中的列。我的第一个想法是将它实现为List,它存储字段的名称(以及相应的数量,使用List的长度)。然后,我将有一个具有List属性的Word类,列表中的每个字符串代表一个字段。然后我创建了这个Word类的BindingList,它给我留下了Lists的BindingList。
当我尝试将我的列表列表数据绑定到我的DataGridView时,网格显示为空 - 它显然不知道我希望如何显示数据,而且我很难弄清楚如何告诉它。我甚至不确定我的列表列表是否是实现可自定义字段的好方法,但这是我能想到的最好的方法。在任何情况下,任何人都可以推荐一种方法来解决这个问题,让我将字段添加到表中,还可以跟踪更改并将其粘贴回原始源?我需要将网格用作编辑工具,以便用户不仅可以添加新元素,还可以更改现有元素。 这是一个个人项目,但它让我有点疯狂。我昨天凌晨5点一直试图搞清楚,然后空手而归。非常感谢阅读!
答案 0 :(得分:0)
我已经读了几次你的帖子了。我不确定我是完全理解的。如果我不这样做,请提供一些细节,我会尽力帮助。
如果我不得不做类似Excel的DataGridView,我想我会使用一个数组。我会创建一个256乘256的数组并将其作为DataSource。然后在用户编辑之后,读取整个DataGrid并重写它是否与您最初使用的数组不同。
答案 1 :(得分:0)
我想你可能会对这堂课感兴趣:
http://www.codeproject.com/KB/grid/DGVColumnSelector.aspx
它允许用户动态显示DataGridView