如何在c#中获得窗体的活动对象
本文关键字:窗体 活动 对象 | 更新日期: 2023-09-27 18:06:24
我想做的是-如果我单击主(MDI)表单的菜单,如果表单已经打开,则不会在该菜单上创建指定表单的新对象。请帮助。
您需要在某个地方(可能是一个字段)保持对打开表单的引用,如果它已设置,则不创建新实例。
伪代码:
// a field
Form myForm;
// In the method where you would normally instantiate the form:
if (myForm == null)
myForm = new MyForm();
myForm.Show();
示例:
private void buttonUnits_Click(object sender, EventArgs e)
{
if (this.unitsForm == null)
{
this.unitsForm = new UnitsForm();
this.unitsForm.MdiParent = this;
this.unitsForm.Disposed += new EventHandler(unitsForm_Disposed);
this.unitsForm.Dock = DockStyle.Fill;
}
this.unitsForm.Show();
this.unitsForm.BringToFront();
this.unitsForm.Focus();
}
void unitsForm_Disposed(object sender, EventArgs e)
{
this.unitsForm = null;
}
应用程序。OpenForms持有所有打开表单的列表,只需迭代它并检查它是否包含您想要创建的类型的表单,如果它包含什么都不做。像这样
private void button1_Click(object sender, EventArgs e)
{
foreach (Form form in Application.OpenForms)
{
if (form is FormTypeToOpen )
return;
}
FormTypeToOpen newForm = new FormTypeToOpen();
this.newForm .Show();
this.newForm.BringToFront();
this.newForm.Focus();
}
最诚挚的问候,Iordan
像下面这样创建一个打开表单的对象Form1纳;
菜单中的单击处理程序检查表单的实例,如
if(frm ==null)
frm = new Form1();
好的,我们得到了新的表单1。现在我们可以显示表单了。
use frm.Show()
or
frm.ShowDialog();
条件:如果你使用的是from . close ();然后使用需要创建对象并显示它如果你使用from .hide();