将数据从一种表单传递到其他表格
我有一个表格,我希望将信息从第一个表单传递到第二个表单,当用户单击编辑按钮时,将根据哪一行进行选择。将数据从一种表单传递到其他表格
什么是最好的方法?以及如何决定如果用户想要添加一个新的表单或者用第一个表单datagrid的选定行中的值填充第二个(编辑)表单时该表单应该是空白的? 行值是同一对象的所有属性。
我可以删除并添加一个新的对象,它编辑一个现在很难用的对象,我应该如何加载第二个表单?
我目前正在创建和实例然后instance.Show();
这是工作打开一个空白表格,但我想要加载与基于选定的行的对象,当用户想编辑一个现有的记录。
假设你的form1是带有显示MyClass类实例行的数据网格(grdMyData)的表单,form2是用于编辑给定行数据的表单。 当用户点击编辑,你可以这样做:
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
}
}
此代码是假设你有正确的窗体2的构造这需要对象的它与类型。当你在Form2中工作时,数据将自动影响Form1显示,因为它们正在处理同一对象的实例。
谢谢,我终于弄清楚了如何用对象作为参数来创建另一个构造函数。这样一个简单的解决方案正盯着我。 – Alex 2010-02-03 10:04:10
我建议以一种形式暴露事件其他形式可以消耗。
这里是官方教程
http://msdn.microsoft.com/en-us/library/aa645739(VS.71).aspx
基本上它会是这样的
// Source form
public event YourEventHandlerType EventName;
// Wherever the event occurs
EventName.Invoke(...);
// Destination form
this.referenceToSourceForm.EventName += MyEventHandler(...);
所以,你需要在目标表单一些参考源代码的形式,或者需要否则在两种形式之外设置事件处理。
Web窗体或Windows窗体或WPF窗体? – abmv 2010-01-31 07:20:41
Windows窗体,桌面应用程序。 – Alex 2010-01-31 08:28:14