我正在尝试学习c#表单,并建立了一个简单的表格编辑器应用程序。我已经创建了所有的控件,一个bindingnavigator,一个bindingsource和一个数据集。大多数控件是文本框到文本字段,所以没有大问题绑定。我必须创建格式和解析函数,并将它们绑定到复选框和下拉框控件,但这是工作正常。我需要使控件激活一个保存和取消按钮时,用户已经改变了他们,但任何事件,我试图underwire得到激发的数据是最初加载或绑定。
我试过在bindingcomplete事件和item changed事件中添加标记,但是它们似乎在表单加载完成之前就被触发了。
我应该在哪里放置代码来声明此记录已加载,并且对控件的任何更改现在都是用户交互?
如果bindingsource.current为null,我尝试检查textbox_changed事件。如果LoadData()函数为end,我尝试设置标志。我尝试在bindingsource bindingcomplete事件中设置标志。
所有这些都不允许我有效地检测包含要显示的第一条(或下一条)记录的表单何时可以有效地供用户开始编辑。
我已经查看了表单、bindingnavigator、bindingsource和dataset的事件,但没有发现明显的地方可以检测到“我现在已经完成了对该记录的加载和格式化”。我查看了在线教程,但它们都显示了如何实现绑定,但没有设置编辑。
1条答案
按热度按时间guicsvcw1#
由于您使用的是DataTable,因此可以处理DataTable.ColumnChanged事件并在那里启用保存按钮。
该事件在列的值更改后引发,根据控件的数据绑定设置,默认情况下在验证控件属性(DataSourceUpdateMode.OnValidation)后引发;如果要立即引发事件(甚至在离开和验证控件之前),请使用代码或设计器将其更改为DataSourceUpdateMode.OnValidation。
假设您有一个按钮(button1)和两个文本框控件(textBox1和textBox2),请将窗体的代码修改为以下代码,以查看在通过textbox控件修改其中一列后如何启用button1: