Как наследовать класс формы другой форме и возможно ли это вообще? - PullRequest
0 голосов
/ 12 января 2019

В последнее время у меня возникают проблемы с наследованием класса Form1 для других форм, которые я создаю. Я пытаюсь создать игру, в которой пользователь отвечает на несколько вопросов, поэтому поле (Button или PictureBox) должно выглядеть так:

Личные суб-кнопки Button1_Click (отправитель как объект, e как EventArgs) Button1.Click

Вопрос («Как зовут актера Леонардо?», «Ди Каприо», Button1)

End Sub

И каждый раз, когда я пытаюсь наследовать Form1 To Form2 (например, раздел игры с известными актерами), я получаю сообщение об ошибке «Базовый класс« Form », указанный для класса« Form2 », не может отличаться от базового класса» Form1 ». 'одного из других его частичных типов. "Когда я пытаюсь изменить System.Windows.Forms.Form в Form1 или WindowsApp12.Form1 в Form2.Designer.vb, Form2 выдает ошибку" Чтобы предотвратить возможную потерю данных перед загрузкой конструктора должны быть устранены следующие ошибки: " Есть ли решение? Btw. Я работаю в VB.NET 2017.

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Когда вы нажимаете кнопку Добавить форму в меню Проект, вы получаете форму, которая наследуется от System.Windows.Forms.Form. Вы можете увидеть это, щелкнув правой кнопкой мыши Form2.Designer.vb и выбрав View Code. В .net OOP класс не может наследоваться от нескольких базовых классов.

Чтобы получить другую форму Form1, добавьте класс в свой проект.

Public Class Class1
    Inherits Form1

End Class

Тогда в Form1

Private Sub OPCode()
    Dim frm As New Class1
    frm.Show()
End Sub
0 голосов
/ 12 января 2019

Когда вы добавляете форму в проект, создаются два файла кода. Для класса с именем Form2 вы получите «Form2.vb», куда вы помещаете весь свой код, и «Form2.Designer.vb», куда идет весь сгенерированный дизайнером код. Вы получаете частичное объявление класса в каждом, и строка Inherits Form помещается в файл кода конструктора, а НЕ в файл кода пользователя. Если затем вы добавите Inherits Form1 в файл кода пользователя, вы теперь скажете Form2, что он наследует Form и Form1, что, очевидно, нецелесообразно.

Правильный способ наследования от существующей формы, а не от стандартного класса Form, - это выбрать шаблон элемента Inherited Form вместо Windows Form. После этого вам будет предложено выбрать существующую форму для наследования.

Если вы уже добавили форму обычным способом и хотите изменить ее базовый класс, вам нужно сделать это в файле кода конструктора, где он уже указан. Чтобы получить доступ к файлу кода дизайнера, нажмите кнопку «Показать все файлы» в обозревателе решений, а затем разверните узел для своей формы. Затем вы можете дважды щелкнуть файл кода дизайнера, чтобы открыть его и отредактировать строку Inherits вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...