打开新表单的类方法C#

问题描述 投票:0回答:2

我想知道在方法中是否有另一种方法来执行此代码,因为我在几乎所有表单中都使用不同的表单实例调用此方法。所以我需要的是创建一个代码,如:

public void NewForm(Form target)
...
target myform = new target();
target.Show();
...

称之为:

NewForm(Form2);
c# .net
2个回答
2
投票

我不知道这种方法有多么有用,但是,你可以采取几种方法。

一般方法

定义:

void NewForm<T>()
  where T : Form, new()
{
  T instance = new T();
  instance.show();
}

调用:

NewForm<LayoutForm>();
  • 优点: 在编译时进行类型检查 安全
  • 缺点: 不是您要求的格式。 不允许传递参数。

Type参数函数

定义:

void NewForm(Type formType)
{
    if(formType.IsSubclassOf(typeof(Form)))
    {
        var form = Activator.CreateInstance(formType) as Form;
        form.show();
    }
}

调用:

NewForm(LayoutForm);
  • 优点: 你问过这种格式
  • 缺点: 不允许将参数传递给构造函数。 如果类型不能用Activator.CreateInstance(x);创建,则抛出 运行时类型检查

传递表单实例

定义:

void NewForm(Form form)
{
  form.show();
}

调用:

NewForm(new LayoutForm());
  • 优点: 允许传递参数。 安全 - >在编译时检查类型。
  • 缺点: 不是您要求的格式 有点无意义。

0
投票

感谢Hans Passant代码以及向我展示通用方法的其他人。我不知道这种通用方法。

Class.cs

public void NewForm<T>() where T:Form, new() 
{ 
T frm = new T(); ... 
frm.Show();
}

Form.cs

private void button1_Click_1(object sender, EventArgs e)
{
NewForm<Form2>();
}
© www.soinside.com 2019 - 2024. All rights reserved.