两个窗体之间传递数据(转)

在最初接触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;
}
}

posted @ 2013-04-26 10:10  在路上的人  阅读(269)  评论(0)    收藏  举报