C# 3.0 将数据从一个窗体复制到另一个窗体

C# 3.0 将数据从一个窗体复制到另一个窗体,c#-3.0,C# 3.0,我有一个带有网格的表单,我想根据用户单击“编辑”按钮时选择的行将信息从第一个表单传递到第二个表单 最好的方法是什么?如果用户希望添加新表单或使用第一个表单datagrid的选定行中的值填充第二个(编辑)表单,我应该如何决定表单应如何为空? 行值是同一对象的所有属性 我可以删除和添加一个新的对象,它正在编辑一个我很难处理的现有对象,我应该如何加载第二个表单 我当前正在创建一个实例,然后是instance.Show() 这是打开一个空白表单,但是当用户想要编辑现有记录时,我想根据所选行将其与对象一起

我有一个带有网格的表单,我想根据用户单击“编辑”按钮时选择的行将信息从第一个表单传递到第二个表单

最好的方法是什么?如果用户希望添加新表单或使用第一个表单datagrid的选定行中的值填充第二个(编辑)表单,我应该如何决定表单应如何为空? 行值是同一对象的所有属性

我可以删除和添加一个新的对象,它正在编辑一个我很难处理的现有对象,我应该如何加载第二个表单

我当前正在创建一个实例,然后是instance.Show()


这是打开一个空白表单,但是当用户想要编辑现有记录时,我想根据所选行将其与对象一起加载。

我建议在一个表单中公开另一个表单可以使用的事件

这是官方教程

基本上是这样的

// Source form  
public event YourEventHandlerType EventName;

// Wherever the event occurs  
EventName.Invoke(...);

// Destination form
this.referenceToSourceForm.EventName += MyEventHandler(...);

因此,您需要在目标表单中引用源表单,否则您需要在两个表单之外设置事件处理。

假设您的表单1是带有数据网格(grdMyData)的表单,它显示MyClass类实例的行,而表单2是用于编辑给定行数据的表单。 当用户单击“编辑”时,可以使用以下命令:

private void btnEdit_Click(sender e, EventArgs arg)
{
   if (grdMyData.SelectedRows.Count == 0)
       return; //nothing to do

   MyClass selectedRow = (MyClass)grdMyData.SelectedRows[0].DataBoundItem;
   Form2 frm2 = new Form2(selectedRow);
   if (frm2.ShowDialog() == DialogResult.OK)
   {
        //do something if needed
   }
}

这段代码假设您有适当的Form2构造函数,该构造函数接受它所使用的对象类型。当您使用Form2时,数据将自动影响Form1的显示,因为它们使用的是同一对象的实例。

Web表单、Windows表单或WPF表单?谢谢,我终于想出了用该对象作为参数创建另一个构造函数的办法。这么简单的解决方案就盯着我看。