#c# #winforms
#c# #winforms
Вопрос:
У меня есть форма Windows с основным элементом управления вкладками и несколькими вкладками (tabTest1, tabTest2, …, tabSettings). Как я могу разделить один файл, созданный дизайнером, на более мелкие, более управляемые файлы? Я пытался использовать partial class
, но это не идеально по двум причинам.
-
Код обработчика событий и дизайнера (независимо от того, на какой вкладке они находятся) генерируются в одном файле.
-
Я должен быть слишком подробным в описаниях своих переменных, чтобы все было правильно (от вкладки к вкладке). Например, несколько «тестовых вкладок» имеют переменную «encoder», поэтому я должен сделать что-то вроде
testOneEncoderValue
,testTwoEncoderLabel
и т.д. Очень раздражает.
Я уверен, что есть лучший способ (отсюда и этот вопрос). Простите мою грубость.
Спасибо!
Ответ №1:
Я бы создал пользовательский класс (контейнер / пользовательский элемент управления), соответствующий каждой «вкладке» и элементам управления в нем. Затем просто поместите эти отдельные элементы управления в свой интерфейс с вкладками как единый элемент управления. Таким образом, элементы управления сохраняются как единое целое без перекрещивания … особенно если вы имеете дело, скажем, с …. 100 элементами управления?
Контейнер / пользовательский элемент управления 1 имеет свои (пример) 30 элементов управления, соответствующих Tab1
Контейнер / пользовательский элемент управления 2 имеет свои (пример) 18 элементов управления, соответствующих Tab2
Контейнер / пользовательский элемент управления 3 имеет свои (пример) 50 элементов управления, соответствующих Tab3
Затем в вашем главном окне страницы с вкладками просто поместите отдельный элемент управления на каждую соответствующую страницу. Теперь они находятся в более управляемых подкомпонентах.
Комментарии:
1. Итак, я добавил пользовательский элемент управления в свой проект и просто скорректировал его размер. Как мне добавить этот UC на страницу вкладки в режиме конструктора? Или это должно быть сделано с помощью кода?
2. @Джон, после создания и перекомпиляции проекта, чтобы видеть его как элемент управления, он должен быть виден в вашем «Наборе инструментов» при выполнении проектных работ. Затем вы сможете перетащить это в свою форму так же, как если бы это был любой другой элемент управления window. Какую версию VS вы используете.
3. Отлично, спасибо, ДРапп! Я ссылаюсь на несколько других. библиотеки DLL и я обнаружил, что он скрывается среди их элементов управления. Еще раз спасибо!
Ответ №2:
Лучше всего было бы попытаться изолировать функциональность каждой вкладки как отдельного объекта и создать UserControl для каждой имеющейся у вас вкладки. Если сами вкладки слишком велики, ваш пользовательский элемент управления может быть дополнительно разделен на дополнительные элементы управления, чтобы получить более точную детализацию. Ваши пользовательские элементы управления не обязательно должны быть изолированы друг от друга, они могут предоставлять данные, методы или события, чтобы их можно было объединить в основной форме.
Если вы хотите сохранить все в одной форме, к сожалению, вы не можете использовать оба способа. Вам либо нужно:
- Храните все в одном файле designer.cs, если вы хотите использовать VS Designer для редактирования своей формы
- Вручную напишите код пользовательского интерфейса и организуйте его по своему усмотрению