Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для LightZ
4 / 4 / 0
Регистрация: 31.10.2014
Сообщений: 39

Обращения к контролам формы из другого класса

14.02.2016, 21:56. Показов 2684. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Хочу узнать мнение программистов с опытом, по поводу следующего вопроса
Каким образом лучше обращаться к контролам формы из другого класса?
Чуть размышлений :
Понимаю, что сделать контрол публичным - это нарушит ООП
Вариант сделать в классе формы свойство с приватным сэттером, которое будет возвращать ссылку на нужный контрол? Или передавать контрол при создании класса, через агрегацию?
А если этих контролов много?

Вопрос возник с необходимостью отделить некую часть, отдельную логику, которая напрямую взаимродействует с большим количеством контролов на форме
Буду благодарен за советы!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2016, 21:56
Ответы с готовыми решениями:

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

Как можно обратиться к wpf контролам из другого класса
<Grid Margin="5"> <TextBlock x:Name="speed_xaml" HorizontalAlignment="Left" Margin="10,7,0,0" TextWrapping="Wrap" Text=""...

Как Получить доступ к контролам формы не из основного класса
Я создаю стандартную форму на которой у меня есть Textbox,объявляю класс connect,пробую получить доступ к моему текстбоксу,но его нет в...

4
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
14.02.2016, 22:01
Лучший ответ Сообщение было отмечено LightZ как решение

Решение

LightZ, никакие контролы никуда передаваться не должны. Передаваться должны только данные. Форма хранит ссылку на объект вашего класса. Если передачу данных инициирует форма-то просто дергать методы и свойства данного объекта. Когда инициатор-объект, то использовать события, а на форме на них подписаться.
1
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
14.02.2016, 22:09
Способы передачи можно посмотреть здесь в п.2:
Ответы на 7 самых частых вопросов по WinForms
Но вопрос в другом.
Если в отдельный класс выносится логика, то в классе формы создается объект этого отдельного класса. Методы этого класса могут напрямую обращаться к контролам и наоборот

Не по теме:

Долго набирал

1
 Аватар для LightZ
4 / 4 / 0
Регистрация: 31.10.2014
Сообщений: 39
14.02.2016, 22:25  [ТС]
Спасибо, надо переварить и подумать как сделать всё элегантно т.к. этот кусок работы с контролами приличный по объему

И т.е. передавать контролы через конструктор в другой класс и делать паблик свойства не рекомендуется?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
14.02.2016, 22:28
LightZ, да, категорически не рекомендуется. Почитайте вот это FAQ, там хорошо написано по этому поводу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.02.2016, 22:28
Помогаю со студенческими работами здесь

Обращение с формы одного класса к объектам формы другого класса
Такой вопрос: у меня есть основной класс, в котором описано текстовое поле textpane на форме, есть другой класс в котором есть списки(...

Как получить доступ к элементам формы из другого обычного класса (не из второй формы)
Сабж. В гугле вся инфа только про доступ из другой формы, это я знаю. А вот как получить доступ из обычного модульного класса?

Как получить доступ к контролу формы из другого класса, не создавая новый экземпляр формы
Как получить доступ к контролу формы из другого класса, не создавая новый экземпляр формы?

Доступ к контролам из другого потока
Как мне получить доступ к контролам на форме из другого потока? Есть код который должен проверить checkbox свойство checked в отдельном...

Обновление формы из другого класса
Есть форма (Form1) открывается сразу после запуска программы. Так же есть класс (class1). Как из class1 изменить допустим textBox не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru