从另一个窗体更新datagridview中选定的行

本文关键字:datagridview 另一个 窗体 更新 | 更新日期: 2024-10-21 10:40:06

我有两个表单Form1和Form2,我想从Form2更新Form1中的datagridview首先,我在Form1中选择datagridview的行,然后单击按钮打开Form2。在Form2中,我输入新数据,然后保存。

我该怎么做?

从另一个窗体更新datagridview中选定的行

您可以在Form1上创建一个公共方法来插入行。让我们称之为LoadData。这将接收指示CCD_ 3上的数据的一组参数。

public void LoadData( ... )
{
    // load the data into the data grid
}

然后在Form2:中添加一个新的构造函数

public Form2(Form1 referrer)
{
    _referrer = referrer;
}

其中_referrer是类型为Form1:的private字段

private Form1 _referrer;

然后,当您加载Form2时,传入this,因为您在Form1:上

var f = new Form2(this);

最后,当您想添加来自Form2的数据时,请执行以下操作:

_referrer.LoadData( ... );

我的解决方案与@Michael Perrenoud的类似。您的目的是将值从form1传递到form2。如何通过?通常需要通过form2的构造函数将form1中的对象传递给form2。那么,该通过什么呢?其他人说传递form1本身或传递gridview控件,但我更喜欢传递你真正想在form2中使用的数据,为什么?因为当你传递一个控件(窗体或网格视图)时,你需要分析并获取它的数据,然后在窗体2中添加到网格视图2,想想看,当你从窗体1传递控件时,也许有一天你会用其他控件(如列表视图或树视图)替换网格视图,甚至有一天,你可能会放弃窗体1,所以你需要修改和重构窗体2。但如果只传递数据,则可以重用form2。这是我的样本代码:

首先,添加一个引用您传递的数据的私人字段

private object mydata = null;

添加一个函数,用传递的数据填充网格视图

public void FillData( ... )
{
    if(mydata != null)
    {
    //add the data into gridview
     }
}

然后,在Form2:中添加一个新的构造函数

public Form2(object data)
{
    _mydata = data;
}

当你想显示表格2时,请从表格1 获取数据

void ShowData()
{
     object mydata = null;
     //get the data from selected rows and set to mydata
     Form2 f = new Form2(mydata);
     f.ShowDialog();
}