是否可以在新的表格实例上建立所有者?在使用主窗体和模型窗口时,我想到了这个问题,假设我创建了一个Form1的新实例,如下所示:
//this Instance From main window
CashDeposit cd=new CashDeposit();
cd.Show(this);
现在我要关闭它并试图在CashDeposit的新EventHandller上创建相同的新实例,如下所示:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
this.Close();
CashDeposit cdd = new CashDeposit();
cdd.Show();
}
//this would showing without any owner but if I create the new instance on another way like below:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
this.Close();
CashDeposit cdd = new CashDeposit();
cdd.Show(this);
}
//than obviously it will going to fire the error like not creating owner on disposing object or control etc.
所以我很难从同一个类中获得CashDeposit新实例的所有者,因为参考表单正在处理,并且不知道如何从CashDeposit类中建立主窗口形式和CashDeposit之间的新关系。在新的实例上。
这里的主要形式是CashDeposit的所有者。在处理上面的Old One(Relational)表单后,我正试图在CashDeposit的新实例上建立所有者。
任何人都知道如何实现同样的目标?。
答案 0 :(得分:2)
您可以通过更改以下代码(在CashDeposit
)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
this.Close();
CashDeposit cdd = new CashDeposit();
cdd.Show(this);
}
到
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
this.Close();
CashDeposit cdd = new CashDeposit();
cdd.Show(this.Owner);
}
答案 1 :(得分:0)
如果您关闭主表单主线程将被所有子表单关闭。
您可以做的是隐藏主表单并打开新的子表单。
this.Hide();
CashDeposit cdd = new CashDeposit();
cdd.FormClosed += new FormClosedEventHandler(cdd_FormClosed);
cdd.Owner = this.Owner;
cdd.Show();
甚至为子窗体关闭创建,然后您可以同时关闭主窗体或重新打开主窗体。
void cdd_FormClosed(object sender, FormClosedEventArgs e)
{
this.Show(); // or this.Close(); depend on your req.
}
答案 2 :(得分:0)
在这里,我问了一个关于将主表单作为所有者建立到CashDeposit类的问题,在某个EventHandller的新实例上它可能是Button或TextboxKeyPress。
查看以下代码:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
this.Close();
CashDeposit cdd = new CashDeposit();
cdd.Show(this.Owner);
}
以上代码在CashDeposit类中作为自我实例的所有者,我希望将主要表单作为CashDeposit on on Newwerance的主要形式,因此我更愿意使用以下代码解决问题。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
this.Close();
CashDeposit cdd = new CashDeposit();
cdd.Show(MainForm.ActiveForm); //You can Replcae MainForm with your Orginal Form
}
现在按照上面我刚刚添加了Form.ActiveForm属性,它显示了activeform的所有者,并且很好地处理了主Windows窗体和模型窗口窗体。