Можно ли разделить файл Visual Basic (.NET/2010) для удобства чтения?

Я пишу программу на Visual Basic 2010. Это HMI (человеко-машинный интерфейс), и поэтому у него есть целый набор кнопок, которые просто отправляют команды на другие устройства. В результате существует огромная куча обработчиков событий для нажатия кнопок, которые на самом деле не могут быть разбиты на модули (если только я не ошибаюсь в понимании модулей).

По сути, я хотел бы иметь возможность перемещать все обработчики событий, например, нажатия кнопок в другой файл. Можно ли это сделать или важно, чтобы они оставались в «MainWindow.xaml.vb»? (Все мои кнопки находятся в одном полноэкранном окне, некоторые скрыты вкладками).

Спасибо,

--Эрик Т


person evilspoons    schedule 29.10.2010    source источник
comment
Как и когда разбивать вещи на модули — это то, к чему вы будете возвращаться снова и снова. Частичные классы решат вашу проблему, но IMO не является предполагаемой целью частичных классов - частичные классы были добавлены в основном для того, чтобы программно сгенерированный код мог находиться в другом файле.   -  person quillbreaker    schedule 29.10.2010


Ответы (6)


Вы можете использовать Частичные классы, чтобы разбить определение класса на несколько файлов, что может помочь организовать код. .

Ссылка выше поможет объяснить, как именно использовать частичные классы. Следующая ссылка покажет вам синтаксис VB.NET (и как использовать конструктор классов для разделения):

Как разбить класс на частичные классы

person Justin Niessner    schedule 29.10.2010
comment
Я должен иметь возможность перенести приличную часть моего кода в отдельный файл, подобный этому. Потрясающий! - person evilspoons; 29.10.2010
comment
FWIW, это сработало, но если вы переместите обработчики событий в отдельный файл через частичные классы, дизайнер XAML в Visual Studio 2010 больше не сможет предоставить вам удобную ссылку на обработчик событий через окно свойств (оно отображается как пустое, и если вы двойной щелчок создаст новый пустой обработчик событий... а затем компиляция, конечно, будет жаловаться на несколько идентичных подписей.) - person evilspoons; 29.10.2010

Обязательно используйте частичный класс. Проверьте эту статью,

http://visualbasic.about.com/od/usingvbnet/a/partclses.htm

person A_Nabelsi    schedule 29.10.2010

Вы можете использовать частичные классы, чтобы разделить их на отдельные файлы, если это необходимо.

person Reed Copsey    schedule 29.10.2010

Мне нравится использовать области, чтобы скрыть код (подсветка кода не делает этого, поэтому я использую изображение) alt text

Имейте в виду, что это только скрывает код в VS, файл все еще полностью не поврежден, и компилятор просто проигнорирует строки #Region и #End Region

person giodamelio    schedule 29.10.2010
comment
Я использовал регионы, НО они на самом деле не помогают, когда у вас есть страница длиной 400 футов, которую вы просто хотите иметь несколько разделов на разных вкладках Visual Studio. Тем не менее, хороший совет. - person evilspoons; 29.10.2010
comment
ааа, правда, это действительно зависит от человека, я думаю. - person giodamelio; 30.10.2010

Не могли бы вы вместо этого разделить некоторые функции на настраиваемые элементы управления? Возможно, даже создавать кнопки на лету на основе каких-то внешних данных?

person MarkJ    schedule 29.10.2010

Что касается модульности пользовательского интерфейса, вы можете изучить композиционные возможности WPF/SL, описанные здесь. , а также с помощниками и примерами здесь . Но это действительно другая архитектура и может потребоваться серьезный рефакторинг, если у вас уже есть много кода.

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

person Matthieu    schedule 29.10.2010
comment
На самом деле я использую WPF, но я как бы использую его с мышлением Windows Forms. В основном я переключился на WPF, чтобы мое приложение масштабировалось под разные разрешения экрана с минимальными усилиями. Командование выглядит увлекательно, и мне тоже может помочь просмотр. Спасибо! - person evilspoons; 29.10.2010
comment
@evilspoons: вы re welcome ! I agree that the transition from Windows Forms to MVVM is a big jump, but it really worth it. Try it on a small scale project, and you быстро увидите преимущества, если вы будете искать SO, вы найдете массу ресурсов о MVVM :) - person Matthieu; 29.10.2010