关于窗口间的操作问题
求教一个窗口间的操作问题
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(参数)
{
//操作控件
}
给你个例子
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绑定数据的方法 } }