关于窗口间的操作问题
求教一个窗口间的操作问题
Form1和Form2
通过Form2的button来控制form1的某一控件属性
应该如何实现?
Form1始终是开启的
------解决方案--------------------标准的做法是使用委托
------解决方案--------------------给button一个返回值 然后操作
------解决方案--------------------1. 从Form 继承一个 Form1类.
2. 从Form 继承一个 Form2类.
3.在Form2类中加一个成员变量:frmParent
4.在Form2 类中加入一个重载的构造方法:public form2(Form1 Parent){frmParent=Parent};
5.在Form1中添加一个Button对象. 对应的事件代码为:
{
Form2 frm=new Form2(this);
frm.Show();
}
6.在Form2中添一个Button对象,对应事件代码为:
{
frmParent.Text="成败改写";
}
------解决方案--------------------在Form2里面添加委托
public delegate void FormRefreshEvent(参数);//这个参数是你要对Form1里面的控件赋值或者显示数据时使用
public event FormRefreshEvent refreshFrom1;
在你想控制Form1的方法(比如方法名是Method)里面
void Method()
{
//处理数据
refreshFrom1(参数);
}
在Form1里面,调用Form2的时候这样写
Form2 fm2=new Form2();
fm2.refreshFrom1+=new Form2.FormRefreshEvent(fm2_refreshFrom1); //fm2_refreshFrom1是实现方法,这里面写你要操作的控件
实现方法里面
void fm2_refreshFrom1(参数)
{
//操作控件
}
给你个例子
C# code
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
fm2.refreshFrom1 += new Form2.FormRefreshEvent(fm2_refreshFrom1);
fm2.ShowDialog();
}
void fm2_refreshFrom1(DataSet ds)
{
this.dataGridView1.DataSource = ds.Tables[0];//此处就是你给DataGridView绑定数据的方法
}
}