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

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

17.02.2015, 08:39. Просмотров 1242. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2015, 08:39
Ответы с готовыми решениями:

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

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

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

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

9
88 / 89 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.02.2015, 09:51 2
Поясните, что значит "Как мне сделать tbx2.Text = tbx1.Text"
0
115 / 115 / 42
Регистрация: 27.02.2013
Сообщений: 899
17.02.2015, 10:06 3
Андрей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
88 / 89 / 51
Регистрация: 19.06.2013
Сообщений: 323
17.02.2015, 10:18 4
Цитата Сообщение от Андрей69 Посмотреть сообщение
Но, как решить вопрос, что бы не плодить глобальные переменные? Или я зря так думаю и все так и делают?
Наверное, так делают все) Если хотите, можно извернуться, и искать текстбокс на форме через this.Controls
1
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 94
17.02.2015, 20:35  [ТС] 5
Цитата Сообщение от BroDIK Посмотреть сообщение
Наверное, так делают все) Если хотите, можно извернуться, и искать текстбокс на форме через this.Controls
Изворачиваться, как раз я и не хочу. Хочу, что бы код был легче читаем и легче модифицировался. Для этого хотел максимально уменьшить зависимость методов от глобальных переменных.

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

Решение

Андрей69, в массиве можешь их держать или в списке) не обязательно для каждого переменную создавать
1
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 94
17.02.2015, 21:47  [ТС] 7
Цитата Сообщение от 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
115 / 115 / 42
Регистрация: 27.02.2013
Сообщений: 899
17.02.2015, 21:55 8
Андрей69, по идее ты можешь сделать List<TextBox> listObj
1
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 94
17.02.2015, 22:06  [ТС] 9
Цитата Сообщение от blackstar Посмотреть сообщение
Андрей69, по идее ты можешь сделать List<TextBox> listObj
A-a-a!!! Я же написал, разнотипные объекты могут быть. Мне нужно было понять, как лучше поступить, если постоянно создавать разные объекты и нужно будет брать из них данные (или методы).
Спасибо! Я понял что вы написали.
0
2133 / 1270 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
17.02.2015, 23:19 10
Лучший ответ Сообщение было отмечено Андрей69 как решение

Решение

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

C#
1
List<Control> listObj = new List<Control>();
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2015, 23:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.