Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» C#: Событие "нажатие кнопки"

Автор: Vovanuch
Дата сообщения: 29.09.2006 15:31
Извините за ламерство.
Пересел с Билдера 6 на BDS2006. Пробую учить С#.
Не могу заставить кнопку выполнить (действия + нажатие другой кнопки).
private void button2_Click(object sender, System.EventArgs e)
        {
            textBox2.Text=NewOb.GetString();
        }

        private void button3_Click(object sender, System.EventArgs e)
        {
            NewOb.SetSting(textBox3.Text);
//тут он и ругается:            
//button2_Click();
}
Не работает так же button2.Click();

На первый вариант - [C# Error] WinForm.cs(177): No overload for method 'button2_Click' takes '0' arguments WinForm.cs(169): (Location of symbol related to previous error)
(Не может переопределить метод, это я понял)

На второй - [C# Error] WinForm.cs(177): The event 'System.Windows.Forms.Control.Click' can only appear on the left hand side of += or -=
Событие,мол, так не применяют.

А КАК?!
Автор: distance
Дата сообщения: 29.09.2006 19:57
мой тебе совет - купи или скачай нормальную книгу по c# где написано что такое эвенты и делегаты.

первая ошибка возникает потому, что функция button2_Click ожидает 2 входных параметка - обьект, который инициировал событие, и дополнительные данные (о чем тебе кстати английским по белому сообщает компилятор)
в твоем случае так: button2_Click(sender, e);


Цитата:
Событие,мол, так не применяют.

совершенно верно. вне класса, в котором описан эвент на этот эвент можно только подписаться или отписаться.
Автор: Vovanuch
Дата сообщения: 30.09.2006 01:25
distance

Цитата:
совершенно верно. вне класса, в котором описан эвент на этот эвент можно только подписаться или отписаться.


Насколько я понимаю, все эти события (нажатия кнопки) описаны в ОДНОМ классе.
public class WinForm : System.Windows.Forms.Form

так что никакого "вне класса" нет.
поправьте, если ошибаюсь.
Автор: EZH
Дата сообщения: 30.09.2006 01:34
Vovanuch
События нажатия кнопки описываются в самом классе кнопки, а не в классе формы System.Windows.Forms.Form. В классе формы ты только подписыпаешь свой обработчик события на само событие (чаще всего за тебя это делает IDE). Если хочешь вызвать принудительно событие Click, то для этого есть метод у кнопки - PerformClick(), либо вызывать твой подписанный на событие обработчик button2_Click с полным набором параметорв.



Добавлено:
Собственно в Билдере то тоже самое.
Автор: Vovanuch
Дата сообщения: 30.09.2006 01:43
distance EZH

button2_Click(sender, e);
работает, благодарю. И PerformClick() тоже! ) Спасибо.

Страницы: 1

Предыдущая тема: 1C Программирование и поддержка


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.