#vb.net #readability #vb.net-2010
#vb.net #удобство чтения #vb.net-2010
Вопрос:
Я пишу программу на Visual Basic 2010. Это HMI (человеко-машинный интерфейс) и, следовательно, имеет целый набор кнопок, которые просто отправляют команды на другие устройства. В результате возникает огромная куча обработчиков событий для нажатия кнопок, которые на самом деле невозможно разбить на модули (если только я не ошибаюсь в понимании модулей).
По сути, я хотел бы иметь возможность перемещать все обработчики событий, скажем, для нажатий кнопок, в другой файл. Можно ли это сделать или важно, чтобы они оставались в «MainWindow.xaml.vb»? (Все мои кнопки находятся в одном полноэкранном окне, некоторые скрыты вкладками).
Спасибо,
—Эрик Т
Комментарии:
1. Как и когда разбивать вещи на модули — это то, к чему вы будете возвращаться снова и снова. Частичные классы решат вашу проблему, но, ИМО, это не является предназначением частичных классов — частичные классы были добавлены в основном для того, чтобы код, сгенерированный программно, мог находиться в другом файле.
Ответ №1:
Вы можете использовать частичные классы для разделения вашего определения класса на несколько файлов, которые могут помочь упорядочить ваш код.
Приведенная выше ссылка поможет точно объяснить, как использовать частичные классы. Следующая ссылка покажет вам VB.NET Синтаксис (и как использовать конструктор классов для разделения):
Комментарии:
1. Я должен быть в состоянии перенести приличную часть моего кода в отдельный файл, подобный этому. Потрясающе!
2. Черт возьми, это сработало, но если вы переместите обработчики событий в отдельный файл с помощью частичных классов, конструктор XAML в Visual Studio 2010 больше не сможет предоставлять вам удобную ссылку на обработчик событий через окно свойств (оно отображается как пустое, и если вы дважды щелкните по нему, он создаст новый пустой обработчик событий… и тогда compile, конечно, будет жаловаться на множество идентичных подписей.)
Ответ №2:
Мне нравится использовать регионы для скрытия кода (подсветка кода этого не делает, поэтому я использую изображение)
Имейте в виду, что это всего лишь скрывает код в VS, файл по-прежнему полностью не поврежден, и компилятор просто проигнорирует #Re&ion
и #End Re&ion
строки
Комментарии:
1. Я использую re&ions, НО они не очень помогают, когда у вас страница длиной 400 футов, на которой на самом деле просто нужно разместить несколько разделов на разных вкладках Visual Studio. Тем не менее, это хороший совет.
2. ах, правда, это действительно зависит от человека, я думаю.
Ответ №3:
Обязательно используйте partial class. Ознакомьтесь с этой статьей,
Ответ №4:
При необходимости вы можете использовать частичные классы для разделения их на отдельные файлы.
Ответ №5:
Не могли бы вы вместо этого разделить некоторые функциональные возможности на пользовательские элементы управления? Возможно, даже создавать кнопки «на лету» на основе каких-то внешних данных?
Ответ №6:
Для модульности пользовательского интерфейса вы могли бы изучить возможности компоновки WPF / SL, описанные здесь, а также с помощью вспомогательных средств и примеров здесь . Но это действительно другая архитектура, и может потребоваться серьезный рефакторинг, если у вас уже есть много кода.
Для кнопок вы должны иметь возможность использовать командование, которое должно скрывать большинство ваших обработчиков событий. Прочитайте о командовании здесь.
Комментарии:
1. На самом деле я использую WPF, но я как бы использую его с учетом Windows Forms. В основном я переключился на WPF, чтобы мое приложение масштабировалось до разных разрешений экрана с минимальными усилиями. Командование выглядит увлекательно, и просмотры тоже могли бы мне помочь. Спасибо!
2. @evilspoons : Вы
re welcome ! I a&ree that the transition from Windows Forms to MVVM is a bi& jump, but it really worth it. Try it on a small scale project, and you
быстро увидите преимущества, если выполните такой поиск, вы найдете тонны ресурсов о MVVM 🙂