我在VB.Net中有一个多项目解决方案。我有一个自定义的表单,其他表单可以继承。它位于一个名为“CustomForm”的独立项目中,没有特殊的图形效果,它与通用Windows窗体相同,只是处理不同的关闭。我有一个名为“TestProject1”的项目,其中包含一个名为Form1的表单,它继承了CustomForm。在第三个项目“TestManager”中,您可以从TestProject1添加Form1的实例,并将其所有权设置为TestManager。我在TestManager中使用以下代码进行了此设置:
Public Shared Sub CreateForm(ByVal frm As CustomForm.CustomForm)
frm.Owner = TestManager.TestManager
frm.Show()
End Sub
但是我收到以下错误: 'Form1'是'TestProject1'中的一个类型,不能用作表达式。
编辑:更多详情:
目前Form1上没有任何内容。将TestManager想象成一个桌面,其中添加了另一个项目的表单。 TestManager引用TestProject1,并使用代码: CreateForm(TestProject1.Form1),它使用上述方法。现在form1引用并继承CustomForm。 我输入代码时会显示此错误,因此我甚至无法构建项目。
答案 0 :(得分:4)
由于我自己的愚蠢,我监督了这么简单的错误。 我没有创建表单的对象或实例,这是问题所在。 只需在行中添加“新”。
CreateForm(New TestProject1.Form1())
答案 1 :(得分:2)
这里有点帮助。我办公室的实习就是这个问题。原因是:他正在重载构造函数(可以),但他没有创建默认构造函数。
似乎如果你想在没有发送参数的情况下使用你自己的类,那就没关系,但是如果你想拥有多个构造函数并且你不添加默认构造函数(没有参数的那个) )然后这个错误会上升。
他正在使用VS 2010 Pro