我有一个使用多个表单的项目,项目可能正在运行相同类型的多个。我正在尝试编写一个类来管理我的所有表单,但是我遇到了类型问题。
显然,泛型类“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;
}
}
答案 0 :(得分:2)
您可以将其转换为所需类型,如消息中所示,转换的语法如下所示:
GeFoss.TextEdit temp = (GeFoss.TextEdit)myFORM;
注意 - 强制转换可能会导致运行时异常(在这种情况下不会出现switch语句)。