Написать один обработчик событий и найти какой компонент выстрелил событие. В Delphi:
procedure TForm1.ButtonClick(Sender: TObject);
begin
if Sender = Button1 then
// react to Button1 being pressed
else if Sender = Button2 then
// react to Button2 being pressed
// etc.
end;
В C#, как для WinForms и WPF, отправитель также передается в обработчик события. Например:
// WPF example
private void button_Click(object sender, RoutedEventArgs e)
{
if (sender == button1)
// and so on just as above
}
И
// WinForms
private void button_Click(object sender, EventArgs e)
{
if (sender == button1)
// and so on just as above
}
Конечно все это, если заявления получить довольно неуклюжим. Таким образом, вы можете объявить структуру, содержащую связанные элементы управления редактированием. In Delphi
type
TControlGroup = record
Button: TButton;
Edit: TEdit;
CheckBox: TCheckBox;
DefaultEditText: string;
end;
Определите массив из этих или, возможно, словаря. Заполните контейнер, когда форма построена. Затем добавьте метод для поиска структуры из экземпляра кнопки. Это позволяет вам параметризовать ваш код GUI, чтобы избежать дублирования.
Ваш обработчик мог бы выглядеть следующим образом:
InitialiseGroup(FindGroup(Sender as TButton));
....
procedure TForm1.InitialiseGroup(const Group: TControlGroup);
begin
Group.Edit.Text := Group.DefaultEditText;
Group.CheckBox.Checked := True;
end;
Очевидно, что вам нужно заполнить в реализации FindGroup
в соответствии с каким контейнером вы решили использовать.
На каком языке вы на самом деле программируете? Показать код – Drew
Нет кода, я только что поставил элементы управления на форму! Я начал в Delphi, затем я попытался на C#, но там тоже не мог прийти. На самом деле для меня это не важно. Я могу создать 3 процедуры (по одной для каждой кнопки), но мне нужно только одно, как я уже сказал. – Feofilakt
Создайте кнопку groupid с индексом – Drew