两个窗体之间传递数据(转)
在最初接触C#的时候,颇为C#两个窗体之间如何传递数据发愁,怎么调用另一个窗体的方法也很头疼,解决办法虽然有好几种,究竟哪个方法好,哪个方法算是正路,见仁见智吧。
如何在一个窗体中操纵另外一个窗体中的事件?
现有两个窗体Form1和Form2.
执行程序,先出现Form1窗体,点击Button,响应事件,出现Form2窗体.(Form1未关闭).
如何在Form2中每触发一个事件,都让Form1刷新一次?
就象photoshop中的图象效果预览一样?
用静态函数的话需要所有的变量均为静态.
--------------------------------------------------------------------------------
把form1做为参数传递过去吧.
在form2加一个带参数的构造函数:在form2窗口操作 f1 就可以.
private Form1 f1 = null;
public From2(Form1 form1)
{
......
this.f1 = form1;
}
调用时:
Form2 f2 = new Form2(this);
f2.Show();
--------------------------------------------------------------------------------
采用楼上的那位说的
private Form1 f1 = null;
public From2(Form1 form1)
{
......
this.f1 = form1;
}
然后每次事件都加入
f1.Refresh();即可刷新
sskset回复:
--------------------------------------------------------------------------------
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
new Form2().Show();
}
private void Form1_Load(object sender, EventArgs e)
{
Form2.Form1RefreshEvent += new EventHandler(Form2_Form1RefreshEvent);
}
void Form2_Form1RefreshEvent(object sender, EventArgs e)
{
this.Refresh();
}
}
public partial class Form2 : Form
{
static public event EventHandler Form1RefreshEvent;
public Form2()
{
InitializeComponent();
}
static int i = 0;
private void button1_Click(object sender, EventArgs e)
{
this.button1.Text = Convert.ToString(i++);
}
private void Form2_Load(object sender, EventArgs e)
{
//哪些事件需要使Form1 刷新
//在这里绑定
this.button1.Click += Form2.Form1RefreshEvent;
}
}

浙公网安备 33010602011771号