C# 通过方法创建新表单
我这里有一些代码。它用于检查应用程序中打开的表单,并确定表单是否已打开。现在我使用它是因为有几个表单我不想同时打开两次。我的问题是我无法打开我想要的表单类型。我想得到F的formtype并打开该特定类型的表单。例:C# 通过方法创建新表单,c#,forms,variables,methods,C#,Forms,Variables,Methods,我这里有一些代码。它用于检查应用程序中打开的表单,并确定表单是否已打开。现在我使用它是因为有几个表单我不想同时打开两次。我的问题是我无法打开我想要的表单类型。我想得到F的formtype并打开该特定类型的表单。例: public void IsOpen(Form f) { bool open = false; FormCollection fc = Application.OpenForms; foreach (Form form
public void IsOpen(Form f)
{
bool open = false;
FormCollection fc = Application.OpenForms;
foreach (Form form in fc)
{
if (form == f)
{
if (form.WindowState == FormWindowState.Minimized)
{
form.WindowState = FormWindowState.Normal;
}
form.BringToFront();
open = true;
}
}
if (open == false)
{
f = new Form();
f.Show();
}
}
我在这里传递形式,所以f应该等于设置形式。但是我需要动态打开不同表单的方法。假设我使用Form1而不是设置,如果Form1的实例未打开,我需要打开它。非常感谢您的帮助。公共字典表单=新字典();
private void mnuSettings_Click(object sender, EventArgs e)
{
Settings set = new Settings();
IsOpen(set);
}
public void OpenSingletonForm(),其中T:Form,new(){
if(!forms.ContainsKey(typeof(T)){
添加(typeof(T),new T());
}
表格[typeof(T)].Show();
}
并像这样使用它:
public Dictionary<Type, Form> forms = new Dictionary<Type, Form>();
public void OpenSingletonForm<T>() where T : Form, new() {
if (!forms.ContainsKey(typeof(T)) {
forms.Add(typeof(T), new T());
}
forms[typeof(T)].Show();
}
OpenSingletonForm();
它的目的是检查应用程序中打开的表单,并确定表单是否已经打开。
嗯..您甚至不知道自己的函数在做什么…嗯,我似乎无法将新表单添加到字典中。它给出了一个错误“无法创建和引用变量t,因为它没有“new()”约束”。有什么想法吗?也感谢您的输入!更新后,请注意函数类型上的new()
约束T
谢谢,非常有效。感谢您的帮助!
OpenSingletonForm<SettingsDialog>();