Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818

Как передать контролы другому классу?

24.09.2014, 17:09. Показов 4324. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Думаю проще всего как мне обьект этой формы передать в след класс, в котором я буду работать с формой но как пример можно? а то все в 1 главный класс пихать не охота.
только не надо мне через лямбдавыражения,делегаты, или через события - если там надо кг кода писать для вытягивания каждого контролла.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2014, 17:09
Ответы с готовыми решениями:

Передача строк другому классу
В общем вкратце обрисую ситуацию, на первом снимке имеется кнопка, где я ввожу в тексбоксы логин и пасс, на втором снимке мне надо их...

Как передать управление другому контролу?
Как передать управление другому контролу? Если передавать так, то всё ок: TextBox TBX = new TextBox(); public TextBox Tekst() {...

Как передать управление другому потоку?
Всем добрый день, есть такой вопрос, не знаю как решить. В чем суть, у меня есть основной поток, в котором создаю объект определенного...

8
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
24.09.2014, 17:19
Можно попонятней и поподробней в какой класс и какие контролы.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
24.09.2014, 18:53
Создайте массив или List<Control> из всех необходимых контролов и передавайте в другой класс, например, в качестве параметра в конструкторе.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MainForm : Form
{
    private void Dummy() {
        var allCtrl = new List<Control>();
        allCtrl.AddRange(this.Controls);
        AnotherClass ac = new AnotherClass(allCtrl);
    }
}
 
public class AnotherClass
{
    public AnotherClass(List<Control> ctrlList) {
        // ...
    }
}
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
25.09.2014, 00:24  [ТС]
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Создайте массив или List<Control> из всех необходимых контролов и передавайте в другой класс, например, в качестве параметра в конструкторе.
а если мне надо весь обьект формы.
например в консттруктор другого класса передать его, но где его взять. Что то не видно его в форме то

Добавлено через 1 час 41 минуту
точно вспомнил как.
C#
1
con = new Connect(this);
не отказался бы еще от примера как все контролы в лист кинуть. Хех
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
25.09.2014, 00:47
Lynatik001, ты зачем-то хочешь из формы передать все(!) контролы в другой класс и там с ними работать? Чем тебя не устраивает класс формы? Ведь он и предназначен для обработки элементов на форме. А вот уже логику отделить от интерфейса формы — это другое дело. Но пихать все контролы в отдельный класс, хотя они уже содержатся в коллекции Controls, — это значит идти против "бритвы Оккама". Что не есть гуд.
Ещё. Класс формы объявлен как partial, а значит его код может находиться в нескольких файлах. Воспользуйся этим, если уж так не хочется всё в одном файле держать. Иногда, с большими формами, это очень выручает.
Цитата Сообщение от Lynatik001 Посмотреть сообщение
все в 1 главный класс пихать не охота.
форма это не обязательно главный класс. Если уж на то пошло, то главный класс это Program
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
25.09.2014, 01:39  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
Lynatik001, ты зачем-то хочешь из формы передать все(!) контролы в другой класс и там с ними работать? Чем тебя не устраивает класс формы? Ведь он и предназначен для обработки элементов на форме. А вот уже логику отделить от интерфейса формы — это другое дело. Но пихать все контролы в отдельный класс, хотя они уже содержатся в коллекции Controls, — это значит идти против "бритвы Оккама". Что не есть гуд.
Ещё. Класс формы объявлен как partial, а значит его код может находиться в нескольких файлах. Воспользуйся этим, если уж так не хочется всё в одном файле держать. Иногда, с большими формами, это очень выручает.
я когда на С++ писал привык розбивать все по классам и по методам не громоздким а не в 1 метод пол реализации формы- ну или класс, каша ведь будет.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
25.09.2014, 15:23
Цитата Сообщение от Lynatik001 Посмотреть сообщение
я когда на С++ писал привык розбивать все по классам и по методам
Всё-таки рекомендую посмотреть в сторону partial классов или вложенных классов. C++ - это одна песня, но чтобы на C# в формах так кто-то делал, я не видел.
Цитата Сообщение от Lynatik001 Посмотреть сообщение
в 1 метод пол реализации формы
Дизайнер форм позволяет вообще забыть об всех этих созданиях контролов и изменении их свойств почти полностью.
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
25.09.2014, 15:48  [ТС]
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Дизайнер форм позволяет вообще забыть об всех этих созданиях контролов и изменении их свойств почти полностью.
так не научишся многих аспектов , клацая и тдп мышкой. Хоть щас именно дизайнер юзаю))
Я имел ввиду их не обявление, а использование.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
25.09.2014, 16:30
Цитата Сообщение от Lynatik001 Посмотреть сообщение
так не научишся многих аспектов , клацая и тдп мышкой
Откройте MainForm.Designer.cs и сами посмотрите, что за код создан дизайнером. Он примитивен, там только создание контролов (что для всех сводится к вызову конструктора без параметра) и изменению свойств. Один раз прочитать этот код и забыть о том, что это вообще нужно вручную писать.
Не стоит беспокоиться, даже с использованием дизайнера придётся написать вручную порядочный объём кода для работы интерфейса, так что научится проблемой не будет.
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Я имел ввиду их не обявление, а использование
В обычном проекте Windows Forms в Visual Studio код разделяется очень удачно.
Допустим форма называется MainForm. Тогда состав проекта будет следующим:
  • MainForm.Designer.cs - в идеале, этот файл вручную вообще править не нужно. Там объявления, стандартные значения свойств контролов и проч. Всё это - однотипные вещи, до такой степени однотипные, что это всё можно автоматом создать
  • MainForm.cs - вот здесь и используйте созданные контролы.
  • Program.cs - точка входа, работы с приложением "в целом".
Такая организация принята на платформе, так и должно быть. Если будете изучать WPF, суть там та же.
Так что при написании проекта на формах больше, чем ~200 строк стоит придерживаться такой стандартной структуры.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2014, 16:30
Помогаю со студенческими работами здесь

Передать контролы другой формы
Здравствуйте. Есть несколько форм: Form1 (основная), Form2, Form3. Можно ли при загрузке программы из события Form1_Load передать в...

Наследование: как передать массив одного класса другому классу?
Доброе время суток, нужна помощь. Не могу сотворить чудо. Сомневаюсь уже во всём. Как передать массив одного класса другому классу? Дабы...

Не получается передать значение одного класса в другому классу
Добрый день не получается передать значение indi класса А в класс Anssingment Заранне благодарен! class Program { ...

Как привязать элементы формы к другому классу?
Всё было ок. Просто GUI приложение с небольшой формой. Но потом я добавил один класс и почему то при добавление новых кнопок, лэйблов и пр...

Как получить доступ к другому классу из .Net Remoting
Здравствуйте! Пример ситуации: есть класс А, который я используя для .Net Remoting и форма (класс Form1). Как мне через метод класса А...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru