如何在方法中将var插入到type中

时间:2017-11-28 18:47:32

标签: c# variables types type-conversion

我使用方法重复打开新表单的代码,我想使用方法,所以当我选择一个按钮时,它会打开相应的表单。 因此,当单击按钮时,我的var将会更改,我会将其传递给方法以更改打开的表单。 我有按钮点击和打开新表单的所有代码,只是我的朋友和我都不能想到如何做到这一点。

private void OPENCUSTOMER(object sender, EventArgs e, string FormName)
    {
        this.Hide();
        var CUSTOMERFORM = new CUSTOMERFORM();
        CUSTOMERFORM.Show();
    }

而不是重复打开新表单的代码我认为我可以使用该方法。但我不知道格式化它所以我可以有一个字符串,我可以为每次点击更改并将其插入到方法中。

private void OPENCUSTOMER(object sender, EventArgs e, string FormName,string FormName)
    {
        FormName="CUSTOMERTABLE";
        OpenNewForm(FormName)
    }
public static OpenNewForm(string NewForm)
    {
        this.Hide();
        var NewForm = new NewForm();
        NewForm.Show();
    }

我使用方法重复打开新表单的代码,我想使用方法,所以当我选择一个按钮时,它会打开相应的表单。 因此,当单击按钮时,我的var将会更改,我会将其传递给方法以更改打开的表单。 我有按钮点击和打开新表单的所有代码,只是我的朋友和我都不能想到如何做到这一点。

2 个答案:

答案 0 :(得分:0)

如果你真的确实需要实现public static OpenNewForm(string NewForm),其中NewForm是表单的类名,可以使用反射来完成 - 但你有一个非常好的想要这个的原因。我建议您将其声明为OpenNewForm<T>(T form) where T : Form,并使用OpenNewForm<CustomerForm>()调用它。

答案 1 :(得分:0)

正如Dylan所说,你可以用反射来做到这一点,但这可能有点先进,因为你已经说过你在编码方面仍然相当新。您遇到的问题是表单的名称。

string NewForm

不等于作为表单的实际对象。把字符串想象成汽车的名字;有人给你一张带有那个名字的卡片,你就没有车了。既不知道汽车的名字也可以创造那辆汽车。这一行:

var NewForm = new NewForm();

无法工作(因为您已经将NewForm声明为字符串)

尝试最大程度地减少代码和代码重复是令人钦佩的,但在这种情况下,我个人会离开它,并且每个按钮都需要两到三行代码才能打开适用的表单(但是继续寻求最小化其他领域的代码)。希望有用。