从另一个表单更新datagridview中的选定行

时间:2013-12-16 13:06:12

标签: c# winforms datagridview

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

我该怎么做?

2 个答案:

答案 0 :(得分:-1)

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

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

然后将新构造函数添加到Form2

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

其中_referrerprivate字段,其类型为Form1

private Form1 _referrer;

然后当你加载Form2时,传递this,因为你在Form1

var f = new Form2(this);

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

_referrer.LoadData( ... );

答案 1 :(得分:-1)

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

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

private object mydata = null;

添加一个函数,用传递的数据填充gridview

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

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

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

如果要显示form2,请从gridview1

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