C# WinForm表单启动器(Application.OpenForms)
我使用以下代码调用我的winforms:C# WinForm表单启动器(Application.OpenForms),c#,winforms,C#,Winforms,我使用以下代码调用我的winforms: try { if (Application.OpenForms.OfType<frmBackupManager>().Count() > 0) { if (Application.OpenForms["frmBackupManager"].WindowState == FormWindowState.Minimized)
try
{
if (Application.OpenForms.OfType<frmBackupManager>().Count() > 0)
{
if (Application.OpenForms["frmBackupManager"].WindowState == FormWindowState.Minimized)
{
Application.OpenForms["frmBackupManager"].WindowState = FormWindowState.Normal;
Application.OpenForms["frmBackupManager"].BringToFront();
}
else
{
Application.OpenForms["frmBackupManager"].BringToFront();
}
}
else
{
// Show Backup Manager
frmBackupManager myBackupManager;
myBackupManager = new frmBackupManager();
myBackupManager.StartPosition = FormStartPosition.Manual;
myBackupManager.Location = new Point(this.Location.X + this.Width / 2 - myBackupManager.Width / 2, this.Location.Y + this.Height / 2 - myBackupManager.Height / 2);
myBackupManager.Show();
}
}
catch (Exception ex)
{
MessageBoxEx.Show("Unable to perform requested action: " + ex.Message.ToString(), "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
试试看
{
if(Application.OpenForms.OfType().Count()>0)
{
if(Application.OpenForms[“frmBackupManager”].WindowState==FormWindowState.Minimized)
{
Application.OpenForms[“frmBackupManager”].WindowState=FormWindowState.Normal;
Application.OpenForms[“frmBackupManager”].BringToFront();
}
其他的
{
Application.OpenForms[“frmBackupManager”].BringToFront();
}
}
其他的
{
//显示备份管理器
frmBackupManager我的backupmanager;
myBackupManager=新的frmBackupManager();
myBackupManager.StartPosition=FormStartPosition.Manual;
myBackupManager.Location=新点(this.Location.X+this.Width/2-myBackupManager.Width/2,this.Location.Y+this.Height/2-myBackupManager.Height/2);
myBackupManager.Show();
}
}
捕获(例外情况除外)
{
MessageBoxEx.Show(“无法执行请求的操作:+ex.Message.ToString(),“错误消息”,MessageBoxButtons.OK,MessageBoxIcon.Error);
}
我想从方法或类调用此函数,但我一直收到一个错误,找不到类型或命名空间名称“FormName”(是否缺少using指令或程序集引用?)
在每个使用FormName的地方。
private void btnBackupManager_Click(object sender, EventArgs e)
{
// Launch Backup Manager Form
LaunchForm("frmBackupManager", "MyBackupManager");
}
private void LaunchForm(string FormName, string MyForm)
{
try
{
if (Application.OpenForms.OfType<FormName>().Count() > 0)
{
if (Application.OpenForms[FormName].WindowState == FormWindowState.Minimized)
{
Application.OpenForms[FormName].WindowState = FormWindowState.Normal;
Application.OpenForms[FormName].BringToFront();
}
else
{
Application.OpenForms[FormName].BringToFront();
}
}
else
{
// Show Backup Manager
FormName myFormName;
myFormName = new FormName();
myFormName.StartPosition = FormStartPosition.Manual;
myFormName.Location = new Point(this.Location.X + this.Width / 2 - myFormName.Width / 2, this.Location.Y + this.Height / 2 - myFormName.Height / 2);
myFormName.Show();
}
}
catch (Exception ex)
{
MessageBoxEx.Show("Unable to perform requested action: " + ex.Message.ToString(), "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnBackupManager\u单击(对象发送者,事件参数e)
{
//启动备份管理器窗体
启动表单(“frmBackupManager”、“MyBackupManager”);
}
私有void启动表单(字符串FormName,字符串MyForm)
{
尝试
{
if(Application.OpenForms.OfType().Count()>0)
{
if(Application.OpenForms[FormName].WindowsState==FormWindowsState.Minimized)
{
Application.OpenForms[FormName].WindowsState=FormWindowsState.Normal;
Application.OpenForms[FormName].BringToFront();
}
其他的
{
Application.OpenForms[FormName].BringToFront();
}
}
其他的
{
//显示备份管理器
FormName我的FormName;
myFormName=新FormName();
myFormName.StartPosition=FormStartPosition.Manual;
myFormName.Location=新点(this.Location.X+this.Width/2-myFormName.Width/2,this.Location.Y+this.Height/2-myFormName.Height/2);
myFormName.Show();
}
}
捕获(例外情况除外)
{
MessageBoxEx.Show(“无法执行请求的操作:+ex.Message.ToString(),“错误消息”,MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
您的问题是使用变量作为类型。例如,这一行:
if (Application.OpenForms.OfType<FormName>().Count() > 0)
您可以使用反射解决此问题:
if(Application.OpenForms.Where(form => form.GetType().Name == FormName).Count() > 0)
您的问题是使用变量作为类型。例如,这一行:
if (Application.OpenForms.OfType<FormName>().Count() > 0)
您可以使用反射解决此问题:
if(Application.OpenForms.Where(form => form.GetType().Name == FormName).Count() > 0)
- 您的泛型函数可以具有Form类型的输入参数(派生所有Win表单的类)
- 例如: 私人作废启动表(formToOpen表)
- 这样,您就可以在需要时使用对象引用
- 并仅访问名称(Form类的name属性;Ex:-formToOpen.name)(如果适用和相关)
- 这使实现保持强类型
- 因此,所需功能的实现可以如下所示:
private void LaunchForm(Form formToOpen) { try { if (formToOpen != null) { if (Application.OpenForms.OfType<Form>().Count() > 0) { if (Application.OpenForms[formToOpen.Name].WindowState == FormWindowState.Minimized) { Application.OpenForms[formToOpen.Name].WindowState = FormWindowState.Normal; Application.OpenForms[formToOpen.Name].BringToFront(); } else { Application.OpenForms[formToOpen.Name].BringToFront(); } } else { Form formToLaunch; formToLaunch = formToOpen; formToLaunch.StartPosition = FormStartPosition.Manual; formToLaunch.Location = new Point(this.Location.X + this.Width / 2 - formToLaunch.Width / 2, this.Location.Y + this.Height / 2 - formToLaunch.Height / 2); formToLaunch.Show(); } } } catch (Exception ex) { MessageBoxEx.Show("Unable to perform requested action: " + ex.Message.ToString(), "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
}private void启动表单(表单formToOpen) { 尝试 { 如果(formToOpen!=null) { if(Application.OpenForms.OfType().Count()>0) { if(Application.OpenForms[formToOpen.Name].WindowState==FormWindowState.Minimized) { Application.OpenForms[formToOpen.Name].WindowState=FormWindowState.Normal; Application.OpenForms[formToOpen.Name].BringToFront(); } 其他的 { Application.OpenForms[formToOpen.Name].BringToFront(); } } 其他的 { 表单发布; formToLaunch=formToOpen; formToLaunch.StartPosition=FormStartPosition.Manual; formToLaunch.Location=新点(this.Location.X+this.Width/2-formToLaunch.Width/2,this.Location.Y+this.Height/2-formToLaunch.Height/2); formToLaunch.Show(); } } } 捕获(例外情况除外) { MessageBoxEx.Show(“无法执行请求的操作:+ex.Message.ToString(),“错误消息”,MessageBoxButtons.OK,MessageBoxIcon.Error); } }
- 您的泛型函数可以具有Form类型的输入参数(派生所有Win表单的类)
- 例如: 私人作废启动表(formToOpen表)
- 这样,您就可以在需要时使用对象引用
- 并仅访问名称(Form类的name属性;Ex:-formToOpen.name)(如果适用和相关)
- 这使实现保持强类型
- 因此,所需功能的实现可以如下所示:
private void LaunchForm(Form formToOpen) { try { if (formToOpen != null) { if (Application.OpenForms.OfType<Form>().Count() > 0) { if (Application.OpenForms[formToOpen.Name].WindowState == FormWindowState.Minimized) { Application.OpenForms[formToOpen.Name].WindowState = FormWindowState.Normal; Application.OpenForms[formToOpen.Name].BringToFront(); } else { Application.OpenForms[formToOpen.Name].BringToFront(); } } else { Form formToLaunch; formToLaunch = formToOpen; formToLaunch.StartPosition = FormStartPosition.Manual; formToLaunch.Location = new Point(this.Location.X + this.Width / 2 - formToLaunch.Width / 2, this.Location.Y + this.Height / 2 - formToLaunch.Height / 2); formToLaunch.Show(); } } } catch (Exception ex) { MessageBoxEx.Show("Unable to perform requested action: " + ex.Message.ToString(), "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void启动表单(表单formToOpen) { 尝试 { 如果(formToOpen!=null) { if(Application.OpenForms.OfType().Count()>0) { if(Application.OpenForms[formToOpen.Name].WindowsState=
if (Application.OpenForms.OfType<FormName>().Count() > 0) { if (Application.OpenForms[FormName].WindowState == FormWindowState.Minimized) { Application.OpenForms[FormName].WindowState = FormWindowState.Normal; Application.OpenForms[FormName].BringToFront(); } else { Application.OpenForms[FormName].BringToFront(); } }
if (Application.OpenForms.OfType<FormName>().Count() > 0) { if (Application.OpenForms[childForm].WindowState == FormWindowState.Minimized) { Application.OpenForms[childForm].WindowState = FormWindowState.Normal; Application.OpenForms[childForm].BringToFront(); } else { Application.OpenForms[childForm].BringToFront(); } }
private void LaunchForm(string childForm, string MyForm) { ... }