使用方法 class 构造函数 C# 创建表单
Create Form with method class constructor C#
我有一个 class 方法 NewForm
下面:
class cFormInteraction
{
public static void NewForm(Form fm)
{
if (fm is null)
{
fm = new Form();
fm.Show();
}
}
}
在 formMain
中,我想创建我想要的表单,代码如下:
public static FormWantToShow FW;
private void button1_Click(object sender, EventArgs e)
{
cFormInteraction.NewForm(FW);
}
我要解决的问题:
if (fm is null)
{
fm = new Form(); // -> How i make the program understand and new the form i transmisson in.
fm.Show();
}
假设您要显示的每个表单都有一个无参数构造函数,您可以通过带有 ref
参数的通用方法来实现。
泛型方面允许 NewForm
方法知道要创建什么表单类型,ref
参数允许调用代码存储对新创建表单的引用以存储在一个字段。
static class FormInteraction
{
public static void NewForm<T>(ref T fm)
where T : Form, new()
{
if (fm is null)
{
fm = new T();
fm.Show();
}
}
}
然后在调用代码中:
public static FormWantToShow form;
private void button1_Click(object sender, EventArgs e)
{
FormInteraction.NewForm(ref form);
}
(我更改了名称以遵循正常的 C# 命名约定。)
在我看来,在 NewForm
方法中进行 null
检查有点令人费解。
该方法的名称是 NewForm
似乎也很奇怪,但实际上它可能不会创建表单。
奇怪的是它也显示了表格,但名称中没有。
那么在我看来,代码应该是这样的:
static class FormInteraction
{
public static T NewAndShowForm<T>()
where T : Form, new()
{
var fm = new T();
fm.Show();
return fm;
}
}
那么你可以这样称呼它:
public static FormWantToShow form;
private void button1_Click(object sender, EventArgs e)
{
if (form != null)
{
form = FormInteraction.NewAndShowForm<FormWantToShow>();
}
}
我有一个 class 方法 NewForm
下面:
class cFormInteraction
{
public static void NewForm(Form fm)
{
if (fm is null)
{
fm = new Form();
fm.Show();
}
}
}
在 formMain
中,我想创建我想要的表单,代码如下:
public static FormWantToShow FW;
private void button1_Click(object sender, EventArgs e)
{
cFormInteraction.NewForm(FW);
}
我要解决的问题:
if (fm is null)
{
fm = new Form(); // -> How i make the program understand and new the form i transmisson in.
fm.Show();
}
假设您要显示的每个表单都有一个无参数构造函数,您可以通过带有 ref
参数的通用方法来实现。
泛型方面允许 NewForm
方法知道要创建什么表单类型,ref
参数允许调用代码存储对新创建表单的引用以存储在一个字段。
static class FormInteraction
{
public static void NewForm<T>(ref T fm)
where T : Form, new()
{
if (fm is null)
{
fm = new T();
fm.Show();
}
}
}
然后在调用代码中:
public static FormWantToShow form;
private void button1_Click(object sender, EventArgs e)
{
FormInteraction.NewForm(ref form);
}
(我更改了名称以遵循正常的 C# 命名约定。)
在我看来,在 NewForm
方法中进行 null
检查有点令人费解。
该方法的名称是 NewForm
似乎也很奇怪,但实际上它可能不会创建表单。
奇怪的是它也显示了表格,但名称中没有。
那么在我看来,代码应该是这样的:
static class FormInteraction
{
public static T NewAndShowForm<T>()
where T : Form, new()
{
var fm = new T();
fm.Show();
return fm;
}
}
那么你可以这样称呼它:
public static FormWantToShow form;
private void button1_Click(object sender, EventArgs e)
{
if (form != null)
{
form = FormInteraction.NewAndShowForm<FormWantToShow>();
}
}