代码之家  ›  专栏  ›  技术社区  ›  Emir

winforms,bindingsource,防止当前项更改

  •  0
  • Emir  · 技术社区  · 15 年前

    如何防止绑定源当前项发生更改? (没有带cancel参数的changing事件…)

    这是一个场景:

    • 我有一个DataGridView和同一表单上的文本框。
    • 我正在使用文本框更改数据源中的值(使用标准数据绑定)
    • 手动写入绑定(单击“保存”按钮后)

    • 当用户使用DataGridView选择另一行时,bindingSource.current属性将更改,文本框将使用所选行中的值进行更新。用户输入的更改将丢失。

    有没有办法防止这个问题?

    我可以阻止bindingSource.current属性更改吗?

    有没有更好的办法来防止这种行为?

    (禁用DataGridView通常不是一个选项)

    2 回复  |  直到 15 年前
        1
  •  0
  •   XXXXX    15 年前

    听起来你不想改变 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 () 在集装箱上 当前绑定源 属性更改。

        2
  •  0
  •   DRapp    15 年前

    我有一个类似的框架,网格和文本框都在同一个表单上。当用户单击编辑按钮(或添加)时,我只是禁用了GridView控件本身…

    mydatagrid.enabled=false;

    继续编辑..

    然后在保存中,如果一切正常,

    mydatagrid.enabled=true;