读书人

关于窗口间的操作有关问题

发布时间: 2012-02-04 15:43:09 作者: rapoo

关于窗口间的操作问题
求教一个窗口间的操作问题
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绑定数据的方法        }    } 

读书人网 >C#

热点推荐