C#中 怎样获取主窗体的对象???

2024-12-28 19:47:08
推荐回答(4个)
回答1:

楼上的方法也是一种,还可以直接把窗体当作参数窗体给另一个窗体。

Form2的定义:

public partial class Form2 : Form
{
Form1 _form;
public Form2(Form1 form)
{
InitializeComponent();
_form = form;//得到传过来的Form1实例
}

private void button1_Click(object sender, EventArgs e)
{
_form.MyShow();
}
}

Form1的定义:

public Form1()
{
InitializeComponent();
}

public void MyShow()
{
MessageBox.Show(this.Text);//这个方法将来可以在From2里面调用
}

private void button1_Click(object sender, EventArgs e)
{//新建一个Form2,并把Form1传过去
Form2 form2 = new Form2(this);
form2.Show();
}

回答2:

//在调用子窗体Form2时,要把Form2的所有者设为主窗体Form1
Form2 f2 = new Form2() ;
f2.Owner = this;
f2.ShowDialog();

//在Form2中调用主窗体Form1时
Form1 f1 = (Form1)this.Owner;
接着调用Form1的公有方法

回答3:

在form1的加载方法里对 副窗体 直接new 一个

private void form1_Load(object sender, EventArgs e)
{
form2 fm = new form2();
fm.showdialog();
}

回答4:

Form2的定义:

public partial class Form2 : Form
{
Form1 _form;
public Form2(Form1 form)
{
InitializeComponent();
_form = form;//得到传过来的Form1实例
}

private void button1_Click(object sender, EventArgs e)
{
_form.MyShow();
}
}

Form1的定义:

public Form1()
{
InitializeComponent();
}

public void MyShow()
{
MessageBox.Show(this.Text);//这个方法将来可以在From2里面调用
}

private void button1_Click(object sender, EventArgs e)
{//新建一个Form2,并把Form1传过去
Form2 form2 = new Form2(this);
form2.Show();
}