C# 从其他表单更新datagridview中的选定行

C# 从其他表单更新datagridview中的选定行,c#,winforms,datagridview,C#,Winforms,Datagridview,我有两个表单Form1和Form2,我想从Form2更新Form1中的datagridview 首先,我选择Form1中datagridview的行,然后单击按钮打开Form2。 在表格2中,我输入新数据,然后保存它 我该怎么做?您可以在Form1上创建一个公共方法来插入行。我们称之为LoadData。这将接收一组参数,这些参数指示表格2上的数据 public void LoadData( ... ) { // load the data into the data grid } 然后

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


我该怎么做?

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

public void LoadData( ... )
{
    // load the data into the data grid
}
然后将新构造函数添加到
表单2

public Form2(Form1 referrer)
{
    _referrer = referrer;
}
其中
\u referer
是一个
私有
字段,键入为
表单1

private Form1 _referrer;
var f = new Form2(this);
然后在加载
Form2
时,传入
this
,因为您在
Form1

private Form1 _referrer;
var f = new Form2(this);
最后,当您要从
表单2
添加数据时,请执行以下操作:

_referrer.LoadData( ... );

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

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

private object mydata = null;
public void FillData( ... )
{
    if(mydata != null)
    {
    //add the data into gridview
     }
}
添加一个函数,用传递的数据填充gridview

private object mydata = null;
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();
}

表格1中的MyDataGridView显示示例:id、名称、地址。我能不能只要一个。是否将选定行中的id值作为字符串获取?2.将此字符串值发送到Form2。3.使用mysqlCommand更新数据,例如:“更新我的_data_base Set bla bla bla Where id=“+String from Form1。如何将我得到的字符串发送到Form2?@user2029546,以与我向您展示的如何将
Form1
@user2029546插入
Form1
的方法相同的方式插入到
Form2
上的附加构造函数中,插入
字符串
。将
字符串
存储为
私有
字段,就像我用
Form1
显示的那样。基本上把
Form1
上的
Form2
所有成员都改成
string
。你能举个简单的例子吗,我很困惑@Michael Perrrenoud我想你最好一步一步地帮我,我完全不知道。字符串eds=Convert.ToString(dataGridView1.SelectedRows[0]。单元格[0]。值);2.帮助我将此字符串发送到Form2