我有一个名为形式form1
与它们在运行时创建的控件。
当我按表单上的按钮另一个名为窗体加载combat
和form1
被隐藏起来,只有1表格( combat
)是可见的。
当我按下一个按钮, combat
我希望我的form1
形成的显示。 但是我不能访问它。
以下是我已经试过:
private void combatBtn_Click(object sender, EventArgs e)
{
Form combat = new Combat(this);
this.Hide();
combat.Show();
}
public partial class Combat : Form
{
public Combat(Form form)
{
InitializeComponent();
form.Show();
}
private void button1_Click(object sender, EventArgs e)
{
form.Show();
}
}
public partial class Combat : Form
{
private form1 form; // Or whatever class you form1 is supposed to be
public Combat(Form form)
{
InitializeComponent();
this.form = form;
}
private void button1_Click(object sender, EventArgs e)
{
form.Show();
}
}
您需要将父窗体存储在一个领域,这样就可以在构造函数外访问它。
它一般不建议在父窗体的实例传递给孩子。 在这种情况下(如经常如此)的代码实际上比较简单,当你不知道:
private void combatBtn_Click(object sender, EventArgs e)
{
Form combat = new Combat();
this.Hide();
combat.ShowDialog();
this.Show();
}
如果你需要显示父窗体关闭子窗体之前,那么你可以通过各种活动做到:
在Combat
添加:
public event Action MyEvent; //TODO rename to a meaningful name
火在按钮单击处理事件:
private void button1_Click(object sender, EventArgs e)
{
MyEvent();
}
再有你的主要形式的处理程序添加到事件:
private void combatBtn_Click(object sender, EventArgs e)
{
Combat combat = new Combat();
this.Hide();
combat.MyEvent += () => this.Show();
combat.Show();
}