Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/89: Рейтинг темы: голосов - 89, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 24
1

Связать Button и TextBox

23.06.2016, 21:48. Показов 16599. Ответов 7
Метки нет (Все метки)

Подскажите нубу, может путаюсь в понятиях:

создаю на форме три кнопки, присваиваю каждой кнопке евент при нажатии
C#
1
2
3
            this.button1.Click += new System.EventHandler(this.button_Click);
            this.button2.Click += new System.EventHandler(this.button_Click);
            this.button3.Click += new System.EventHandler(this.button_Click);
затем сам метод, который берет сендер и присваивает ему текст
C#
1
2
3
4
         private void button_Click(object sender, EventArgs e)
        {
            ((Button)sender).Text = "empty";
        }
с этим все понятно, но предположим я создам 3 текстбокса и хочу передать их в метод, чтобы при нажатии кнопки текст применялся не к кнопке(сендеру) а к желаемому текстбоксу, как это сделать
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2016, 21:48
Ответы с готовыми решениями:

Как связать Button'ы c TextBox'ами или вопросы с ответами?
Здравствуйте! У меня имеется несколько кнопок Button и несколько Textbox. Texbox накладываю друг на...

При нажатии на Button каждый раз создается новый компонент (button/label/textbox)
Как реализовать?

Сумму с двух textBox вывести в третий textBox после нажатия button
Добрый день. Перерыла кучю книг, ео ненашла банального примера. Мне нужно в windows form...

Есть листбокс и кнпока(button) как их связать вместе
Есть листбокс и кнпока(button) как их связать вместе, чтобы при нажатие на кнопку менялись элементы...

7
251 / 231 / 115
Регистрация: 14.03.2015
Сообщений: 911
Записей в блоге: 1
23.06.2016, 23:29 2
sender - объект, у которого было вызван обработчик события.

Если вы желаете к конкретному текстбоксу обратиться с добавлением текста - можете использовать что-то вроде (тривиально)
C#
1
2
3
4
private void button_Click(object sender, EventArgs e)
        {
            textbox1.Text = "Hello, world!";
        }
0
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 24
24.06.2016, 06:19  [ТС] 3
нет, это тривиально, у каждой кнопки тогда будет свой метод, именно это у меня сейчас. Я же хочу сделать один метод для всех кнопок. Пока на ум только приходит в методе проверить текст кнопки, вызвавшей событие, и в зависимости от того на какую кнопку нажал, у того текстбокса и делать изменения, но это тоже как-то неизящно, мне кажется.
0
Модератор
Эксперт .NET
5778 / 4661 / 2934
Регистрация: 20.04.2015
Сообщений: 8,335
24.06.2016, 12:55 4
Лучший ответ Сообщение было отмечено konstboot как решение

Решение

konstboot,
Вот пару вариантов:
1) Массивы и индексы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Button[] btns;
TextBox[] tbs;
private void Form1_Load(object sender, EventArgs e)
{
    btns = new Button[] { button1, button2, button3 };
    tbs = new TextBox[] { textBox1, textBox2, textBox3 };
    this.button1.Click += new System.EventHandler(this.button_Click);
    this.button2.Click += new System.EventHandler(this.button_Click);
    this.button3.Click += new System.EventHandler(this.button_Click);
}
 
private void button_Click(object sender, EventArgs e)
{
    tbs[Array.IndexOf(btns, (sender as Button))].Text = "Hello, world!";
}
2) Теги
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void Form1_Load(object sender, EventArgs e)
{
    this.button1.Click += new System.EventHandler(this.button_Click);
    this.button2.Click += new System.EventHandler(this.button_Click);
    this.button3.Click += new System.EventHandler(this.button_Click);
    button1.Tag = textBox1;
    button2.Tag = textBox2;
    button3.Tag = textBox3;
}
 
private void button_Click(object sender, EventArgs e)
{
    ((sender as Button).Tag as TextBox).Text = "Hello, world!";
}
Есть еще вариант создать юзерконтрол, включающий в себя кнопку и текстбокс. В этом случае проблема определения нужного текстбокса даже не появится.
1
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 24
24.06.2016, 14:00  [ТС] 5
второй вариант это именно то что я искал, as это пробел в моих скудных знаниях.
только одно не могу понять, почему когда я в свойствах кнопки в конструкторе в поле Tag пишу имя текстбокса он пишет ошибку: "Ссылка на объект не указывает на экземпляр объекта."
получается что написав "
C#
1
button1.Tag = tb1;"
я передаю в Tag объект а не стринг с его названием?
0
854 / 739 / 438
Регистрация: 09.04.2014
Сообщений: 1,762
24.06.2016, 14:57 6
Цитата Сообщение от konstboot Посмотреть сообщение
я передаю в Tag объект а не стринг с его названием?
именно
0
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 24
02.08.2016, 21:33  [ТС] 7
и все-таки осталось ощущение что есть какой-то другой вариант решения.
сейчас чтобы изменить чтото у контрола я делаю так:
C#
1
2
3
4
5
6
7
for (int i = 0; i < this.Controls.Count; i++)
            {
                if (Convert.ToString(this.Controls[i].Name) == "checkBox")
                    {
                      (this.Controls[i] as CheckBox).Checked = true;
                    }
            }
и появляется ощущение что можно заменить это на что-то типа
C#
1
("checkBox" as CheckBox).Checked = true;
но, разумеется, это должно быть как-то не так.
0
Эксперт .NET
9017 / 6343 / 1052
Регистрация: 21.01.2016
Сообщений: 24,012
03.08.2016, 07:06 8
Цитата Сообщение от konstboot Посмотреть сообщение
и все-таки осталось ощущение что есть какой-то другой вариант решения.
Конечно есть. Нужно использовать модель данных, а не воротить спагетти-код. За разъяснениями сюда.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2016, 07:06

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Textbox и button
Дано 6 кнопопок, на каждой кнопке есть буква, как сделать чтобы при нажатии на кнопку в textbox...

Элементы Button, textBox
Начинаю изучение. Пробую создать форму с кнопкой и текстбоксом. При нажатии на кнопку запускается...

Listbox, textbox, button и timer
Из 1-го textbox по нажатию кнопки в listbox выводятся ноты: дорефасольми(выводится вся эта строчка)...

Передача информации из textbox в button
У меня считывается массив из файла в textbox. 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 1 ...


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

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

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