如何防止bindingSource Current项目发生变化? (取消参数没有变化事件......)
这是一个场景:
手动编写绑定(单击“保存”按钮后)
当用户使用DataGridView选择另一行时,将更改bindingSource.Current属性,并使用所选行中的值更新文本框。用户输入的更改将丢失。
有什么方法可以防止这个问题吗?
我可以阻止bindingSource.Current属性更改吗?
有没有更好的选择来阻止这种行为?
(禁用dataGridView是不可能的选择)
答案 0 :(得分:0)
我在同一表单上有一个类似于网格和文本框的框架。当用户单击EDIT按钮(或Add)时,我只是禁用gridview控件本身......
MyDataGrid.Enabled = false;
继续编辑..
然后在SAVE中,如果一切正常,
MyDataGrid.Enabled = true;
答案 1 :(得分:0)
听起来你不想改变bindingSource.Current
,而是想在更改当前行之前保存文本框的内容?如果您已将集合绑定到bindingSource
,那么文本框是否引用该集合中当前元素的属性?
我不确定你要做什么,但在黑暗中拍摄可能是将同一DataSource
绑定到两个不同的BindingSource
对象,如下所示:
gridBindingSource.DataSource = theDataSource;
textBoxBindingSource.DataSource = theDataSource;
myDataGrid.DataSource = gridBindingSource;
firstNameTextBox.Bindings.Add (new Binding ("Text", textBoxBindingSource, "FirstName"));
但这很奇怪,因为如果theDataSource
适用于网格控件,那么它就是具有FirstName
属性的事物的集合。也许如果你在你的问题中更具体。
ETA:如果要将文本框内容保存到当前行,请在ValidateChildren ()
属性更改之前调用容器上的bindingSource.Current
。