Не визуальное наследование WinForms с vb.net - PullRequest
2 голосов
/ 21 сентября 2011

У меня есть две формы, которые имеют схожую функциональность (то есть количество схожих элементов управления), но имеют разный макет. Так что нормальная унаследованная форма (которую обеспечивает VS2010) здесь не будет работать.

Я пробовал следующее:

Public Class BaseForm
  Inherits System.Windows.Forms.Form

  Friend WithEvents Button1 As System.Windows.Forms.Button
End Class  

И в Form1.Designer.vb :

Partial Class Form1
    Inherits BaseForm
    ...
    <all Designer generated Code>
    ...

    ' Friend WithEvents Button1 As System.Windows.Forms.Button <- remove this Line
End Class

Если я скомпилирую / выполню это, тестовая форма будет работать как положено; Но теперь я не могу больше проектировать форму.

Если я переключаюсь в Design-Mode, он говорит:

 The variable 'Button1' is either undeclared or was never assigned. 

http://imgur.com/ieWvf

Похоже, что Дизайнер пытается угадать, как выглядит Форма, проверяя самый верхний класс, без компиляции полного дерева наследования ...

Кто-нибудь знает обходной путь для этого?

Thx, Daniel

1 Ответ

0 голосов
/ 06 октября 2011

У меня такое ощущение, что у вас есть некоторые существующие элементы управления в базовой форме, которые вы хотите перенести в унаследованную форму, а затем добавить дополнительные функции самостоятельно.Помните одну вещь: наследование в VB.NET по умолчанию установлено на затенение, поэтому вы можете переопределить код на вашей унаследованной странице для той же кнопки, чтобы выполнить другую функцию.

Однако, я думаю, вы забыли ключевое слово Overridableпри объявлении элементов формы в родительской форме.Это поможет компилятору узнать, что форма может быть переопределена, и позволит вам определять пользовательские функции.

Помните, что все элементы управления и страницы в VB.NET являются классами, и все, что мы узнали во время уроков ООП в колледже, применимо здесь.

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