将我的通用表单变量转换为特定类型的表单

时间:2014-03-29 17:25:08

标签: c# forms

我有一个使用多个表单的项目,项目可能正在运行相同类型的多个。我正在尝试编写一个类来管理我的所有表单,但是我遇到了类型问题。

显然,泛型类“Form”没有我需要能够在表单中调用的某些特定功能。我想要做的是抓取一个表单,检查它的类型,然后调用它的类型特定的功能。我为此设置的是一个switch-case,我抓取该类型的字符串组件,然后相应地执行操作(我可以稍后清理它)。问题是,即使我知道类型,我也无法将“Form”变量重新分配给“TextEdit”变量。它说

“无法将类型”System.Windows.Forms.Form“隐式转换为”GeFoss.TextEdit“。存在显式转换(您是否缺少演员?)”

这让我相信有一种方法可以进行转移,但我找不到它。我不知道我是否离开了这个不清楚,但如果你有问题请告诉我。

这是相关代码。请注意,在主代码中创建Process后立即调用Process.initialize([[Form]])

 public class Process
{

    public Form myFORM = new Form();
    public Type mytype;
.
.
.
.
    public void initialize(Form genMe)
    {
        myFORM = genMe;
        mytype = myFORM.GetType();
        giveProc();
    }
    private void giveProc()
    {
        switch (Convert.ToString(mytype))
        {
            case "GeFoss.TextEdit":
                TextEdit temp = myFORM;
                break;
            default:
                break;
        }
    }

1 个答案:

答案 0 :(得分:2)

您可以将其转换为所需类型,如消息中所示,转换的语法如下所示:

 GeFoss.TextEdit temp = (GeFoss.TextEdit)myFORM;

注意 - 强制转换可能会导致运行时异常(在这种情况下不会出现switch语句)。