【问题标题】:Form2 changes does not reflect the changes in Form1Form2 的变化不反映 Form1 的变化
【发布时间】:2011-08-30 02:00:07
【问题描述】:

datagridview 有问题。

表格 1:使用 datagridview 填充数据 ...(当我单击 datagrid 视图行时,相应的行值将传输到另一个表格)

Form 2:我有带保存按钮的文本按钮

当我点击数据网格视图行时,值被传输到另一个表单,这工作正常.....

在表格 2 中,我对该数据进行了一些更改,但这些更改并未反映在表格 1 的数据网格视图中...

我该如何解决这个问题.....

【问题讨论】:

  • 您使用数据库吗?如果不是,数据来自哪里?
  • 无论如何,这可能会有所帮助:stackoverflow.com/questions/630343/…
  • 我正在处理数据库......使用绑定源绑定数据网格视图......
  • @shadow 该帖子中没有提到其他形式...
  • 其他形式不相关,无论数据如何更改或在何处更改。

标签: c# .net winforms


【解决方案1】:

您的选择很少。将 Form1 实例传递给 Form2 并从 Form2 刷新 Form1 DataGridView 数据源是一种选择。

例如。 Form2 构造函数可以如下所示

Form1 myForm1;

public Form2(Form1 form1)
{
    myForm1 = form1;
}

private void SaveButtonClicked()
{
    //Refresh the Form1.DataGridView DataSource.
}

方法2

您可以通过在Form2中创建事件来调用方法来刷新Form1中的Form1 DataGridView。

【讨论】:

    【解决方案2】:

    要回答这个问题,我们必须知道您如何将所选 GridRow 的值传递给另一个表单的控件。

    例如,如果您的网格绑定到数据集/数据表,一旦您在 UI 中选择了一行并且显示另一个表单,该 DataGridRow 的字段被分解为不同的控件,您会将哪些对象传递给另一个表单?

    例如,我将传递链接到网格中选定行的 DataRow,这样在第二种形式中,您仍然可以引用数据行,并且当有人更改文本框中的值(例如)时,您可以手动更新数据行列的值与用户输入的新值。

    这样,如果您在之前的表单中刷新网格,您将看到更改。

    请注意,这可以通过多种不同的方式完成,如果我可以从头开始编写整个逻辑,我可能不会完全使用这种方法,但你说的太少了,所以现在不能提出更多建议.

    【讨论】:

      【解决方案3】:

      如果您使用 ShowDialog() 方法显示 Form2,则此调用将暂停 Form1,直到 Form2 未关闭。

      这是最简单的方法。例如

      Form1 {
          UpdateRowMethod() {
            DataRow Row = GetSelectedRow()
            Form2 frm;
            frm = new Form2(Row.Field1, Row.Field2, Row.Field3)
            if frm.ShowDialog() = OK {
               Row.Field1 = frm.Property1
               Row.Field2 = frm.Property2
               Row.Field3 = frm.Property3
               DataGridView1.InvalidateSelectedRow()
            }
         }
      }
      

      如您所见,Form2 接受 Row 的字段值作为其构造函数的参数。 Form2 通过其属性返回更新的数据。

      如果您使用的是 Show() 方法,那么您需要实现事件/委托以通知 Form1 数据已更改。

      【讨论】:

        【解决方案4】:

        在 Form1 中创建一个 BindingSource,用它来填充 Form1 中的 DataGridView。在调用之前将 BindingSource 传递给 Form2。您的所有更改都将自动输入/输出。除了 BindingSouce 属性之外,您不需要在 Form2 中公开任何属性(如果您不想通过其构造函数传递它)。

        【讨论】:

          猜你喜欢
          • 2018-09-23
          • 2014-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-18
          • 2019-07-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多