对此问题的答案可能会变成“不使用键入的数据集而不使用绑定导航器”。 然而,我很好奇我看到的行为。更改列表框选择不会将更改从BindingSource移动到数据集
因此,我创建了一个表单,其中每个控件都从数据源浏览器中拖出。 我删除了绑定导航器,因为它对于这个特殊的表单来说很丑,也不合适。 我添加了一个ListBox并将DataSource设置为BindingSource。
注意ListBox没有被绑定,它只是从BindingSource中自己填充。 通过一些我不指望的魔法,在ListBox中移动将浏览BindingSource,并且所有其他控件都相应地更新。
我可以对绑定控件进行更改,并显式调用BindingSource上的EndEdit,然后通过Table Adapter更新DataSource。很棒。
当我在绑定控件中进行更改并单击列表框中的新选项时,我希望能够检查更改并提示保存或重置(如果有)。
这是我一直未能弄清楚的奇怪部分。
无论我附加到什么事件,DataSet.HasChanges在第二个ListBox更改之前都不会返回true。 我搜索并尝试了几十条建议,其中大部分都很荒谬,但有一些看起来很有希望。 没有运气。
编辑:这不是第二次点击是重要的,它是当你点击原始(编辑)的项目。