Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100

Как организовать взаимодействие между объектами

17.02.2015, 08:39. Показов 3073. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В панели динамически создаю textBox (для примера)

C#
1
2
3
4
5
        private void button1_Click(object sender, EventArgs e)
        {
            TextBox tbx1 = new TextBox() { Parent = panel1, Dock = DockStyle.Top, Font = new Font("Arial", 16) };
            tbx1.Text = "text";            
        }
Затем, в другом методе еще один
C#
1
2
3
4
        private void button2_Click(object sender, EventArgs e)
        {
            TextBox tbx2 = new TextBox() { Parent = panel1, Dock = DockStyle.Bottom, Font = new Font("Arial", 16) };
        }
Как мне сделать tbx2.Text = tbx1.Text.

Я понимаю, что можно заранее сделать
C#
1
2
            TextBox tbx1;
            TextBox tbx2;
Но, как решить вопрос, что бы не плодить глобальные переменные? Или я зря так думаю и все так и делают?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2015, 08:39
Ответы с готовыми решениями:

Как создать связь между объектами?
Здравствуйте, столкнулся с такой проблемой. Нужно создать связь между объектами. В общем сейчас есть 4 класса и эти 4 класса производны от...

Как организовать взаимодействие между soap службой и winforms сервером
Всем привет! Есть приложение Winforms (серверное), на котором textbox, в который человек может ввести допустим слово или цифру. Есть...

Взаимодействие с несозданными объектами
Здравствуйте! Немного об игровой логике, а именно взаимодействии объектов. Допустим, что есть класс Unit, в котором прописана всякая...

9
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.02.2015, 09:51
Поясните, что значит "Как мне сделать tbx2.Text = tbx1.Text"
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
17.02.2015, 10:06
Андрей69, никак не решить без глобальных перемен. Поэтому сделай вначале 2 обычные глобальные переменные string, а затем к нм присвой значение textboxов:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public string a1;
        public string a2;
         private void button1_Click(object sender, EventArgs e)
        {
            TextBox tbx1 = new TextBox() { Parent = panel1, Dock = DockStyle.Top, Font = new Font("Arial", 16) };
            tbx1.Text = "text"; 
            a1 =tbx1.Text;        
        }
        private void button2_Click(object sender, EventArgs e)
        {
            TextBox tbx2 = new TextBox() { Parent = panel1, Dock = DockStyle.Bottom, Font = new Font("Arial", 16) };
            tbx.Text = a1;
        }
1
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.02.2015, 10:18
Цитата Сообщение от Андрей69 Посмотреть сообщение
Но, как решить вопрос, что бы не плодить глобальные переменные? Или я зря так думаю и все так и делают?
Наверное, так делают все) Если хотите, можно извернуться, и искать текстбокс на форме через this.Controls
1
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100
17.02.2015, 20:35  [ТС]
Цитата Сообщение от BroDIK Посмотреть сообщение
Наверное, так делают все) Если хотите, можно извернуться, и искать текстбокс на форме через this.Controls
Изворачиваться, как раз я и не хочу. Хочу, что бы код был легче читаем и легче модифицировался. Для этого хотел максимально уменьшить зависимость методов от глобальных переменных.

Получается, если у меня много динамически созданных объектов, то для передачи информации друг другу мне нужно делать кучу глобальных переменных?
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
17.02.2015, 20:45
Лучший ответ Сообщение было отмечено Андрей69 как решение

Решение

Андрей69, в массиве можешь их держать или в списке) не обязательно для каждого переменную создавать
1
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100
17.02.2015, 21:47  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
в массиве можешь их держать или в списке) не обязательно для каждого переменную создавать
Создаю List<object> и кидаю туда ссылки на объекты (объекты могут бить разнотипные).
Далее достаю нужный элемент массива и беру из него информацию для другого объекта.
Я правильно понял подход?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
List<object> listObj = new List<object>();
 
        private void button1_Click(object sender, EventArgs e)
        {
            TextBox tbx1 = new TextBox() { Parent = panel1, Dock = DockStyle.Top, Font = new Font("Arial", 16) };
            tbx1.Text = "text";
            listObj.Add(tbx1); 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            TextBox tbx2 = new TextBox() { Parent = panel1, Dock = DockStyle.Bottom, Font = new Font("Arial", 16) };
 
            tbx2.Text = (listObj[0] as TextBox).Text;
        }
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
17.02.2015, 21:55
Андрей69, по идее ты можешь сделать List<TextBox> listObj
1
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100
17.02.2015, 22:06  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
Андрей69, по идее ты можешь сделать List<TextBox> listObj
A-a-a!!! Я же написал, разнотипные объекты могут быть. Мне нужно было понять, как лучше поступить, если постоянно создавать разные объекты и нужно будет брать из них данные (или методы).
Спасибо! Я понял что вы написали.
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
17.02.2015, 23:19
Лучший ответ Сообщение было отмечено Андрей69 как решение

Решение

Андрей69, если все объекты будут контролы , то делай коллекцию контролов, ибо нужно всегда стараться использовать ближнего общего родственника (или интерфейса) у объектов при хранении их в одной коллекции(или массиве). List<object> не гуд

C#
1
List<Control> listObj = new List<Control>();
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2015, 23:19
Помогаю со студенческими работами здесь

Как организовать передачу данных между объектами разных классов?
Есть объект doc в нутрии него создается еще два объекта ui и engine, engine в свою очередь создает еще один объект obj. Вопрос, как из ui...

Взаимодействие между 3д объектами
Здравствуйте! Создаю 3д модель. И вот нужно, чтобы некий кран мог перетаскивать пластины с помощью присосок. Пластины в разных частях...

Как организовать взаимодействие между частями интерфейса?
Начал изучать Swing, и столкнулся с проблемой: в книгах можно найти подробное описание как сделать, например комбобокс, но нет примеров как...

Как организовать взаимодействие между апплетом и сервлетом?
Можно ли с помощью сервлета запустить апплет...и как именно это сделать? просто прописать в сервлете? или же надо создавать клас через...

Взаимодействие между объектами в классах
Здрасте! У меня есть прога для регулирования расходов, в которой есть класс Account и класс Category. Есть ещё классы ManageAccounts(для...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru