如何将一个表单类继承到另一个表单,甚至有可能吗?

时间:2019-01-11 23:33:06

标签: vb.net oop inheritance

最近我在将Form1类继承到我创建的其他表单时遇到麻烦。我正在尝试创建一个用户回答多个问题的游戏,因此框(按钮或图片框)应如下所示:

私人子Button1_Click(作为对象发送,作为EventArgs发送) Button1。点击

问题(“演员莱昂纳多的名字是什么?”,“迪卡普里奥”,Button1)

结束子

并且每次我尝试将Form1继承到Form2(例如游戏中著名的演员部分)时,都会收到错误消息“为类'Form2'指定的基类'Form'不能与基类'Form1不同“它的其他部分类型之一。”当我尝试将System.Windows.Forms.Form修改为Form1或Form2.Designer.vb中的WindowsApp12.Form1时,Form2给我一个错误“为了防止在加载设计器之前可能的数据丢失,必须解决以下错误:” 有什么解决办法吗?顺便说一句。我正在VB.NET 2017中工作。

2 个答案:

答案 0 :(得分:4)

将表单添加到项目时,将创建两个代码文件。对于名为Form2的类,您将获得“ Form2.vb”(在其中放置所有代码)和“ Form2.Designer.vb”(在此处由设计人员生成的所有代码)。您会在每个类中获得部分类声明,并且Inherits Form行放置在设计器代码文件中,而不是用户代码文件中。如果然后去将Inherits Form1添加到用户代码文件中,您现在就告诉Form2它继承了FormForm1,这显然是不合理的。

从现有表单而不是标准Form类继承的正确方法是选择Inherited Form项目模板而不是Windows Form。完成此操作后,系统会提示您选择一个要继承的现有表单。

如果您已经以常规方式添加了表单,并且想要更改其基类,则需要在已经指定了它的设计器代码文件中进行更改。要访问设计者代码文件,请在解决方案资源管理器中单击“显示所有文件”按钮,然后展开表单的节点。然后,您可以双击设计器代码文件以将其打开并手动编辑Inherits行。

答案 1 :(得分:0)

当您在“项目”菜单上单击“添加表单”时,您将获得一个继承自System.Windows.Forms.Form的表单。您可以通过右键单击Form2.Designer.vb并选择查看代码来查看。在.net OOP中,一个类不能从多个基类中继承。

要获取另一个Form1,请向您的项目中添加一个类。

Public Class Class1
    Inherits Form1

End Class

然后在Form1中

Private Sub OPCode()
    Dim frm As New Class1
    frm.Show()
End Sub