2015-01-29 4 views
0

Привет, я практически не знаком с C#, я обычно программирую с помощью C++, поэтому, пожалуйста, несите меня. Я кодирую приложение, и у меня есть 10 кнопок, 5 из которых практически делают то же самое. В настоящее время у меня есть 5 обработчиков событий, делающих то же самое. Как я могу изменить это на один четный обработчик с операторами if. Кроме того, моя проблема в том, что даже при том, что методы каждой кнопки такие же, у меня есть некоторые небольшие отличия от одного к другому, как описано ниже:Настройте один обработчик событий для нескольких кнопок

кнопки 1 copared с помощью кнопки 5 Кнопка 2 copmpared с помощью кнопки 6 кнопку 3 по сравнению с кнопка 7 и т. д.

Как я могу решить эту небольшую разницу в каждом случае?

Thankyou так много

+0

WPF? Winform? Если WPF, возможно, вам стоит взглянуть на MVVM и ICommand, Привяжите каждую кнопку к той же команде и просто передайте CommandParameter, чтобы узнать, что из кнопки ведьмы вы приходите. – rducom

ответ

2
button.SomeEvent += SomeHandler 

void SomeHandler(object sender, EventArgs e) 
{ 
    Button b = (Button)sender; //get the specific button that was pressed 
    ... 
} 

Используйте оператор + = добавить метод к событию и просто добавить один и тот же метод.

+0

Я бы изменил это, сказав, что события должны быть объявлены/назначены в конструкторе, а не в коде, но он даст тот же результат. –

+0

@JoeBrunscheon - Почему? Если нет разницы, почему это имеет значение? – Hogan

+0

Я не понимаю, почему это имеет значение. – Stilgar

0

Вы можете установить их все на один и тот же обработчик, получить вызывающую кнопку, проверить идентификатор в инструкции if и выполнить различные действия - ИЛИ - вы могли бы использовать гораздо более общий рефактор, который выглядит так:

void Button1Action(object sender, EventArgs e) 
{ 

    // do stuff for button 1 here 

    SharedCode(); 
} 

void Button2Action(object sender, EventArgs e) 
{ 

    // do stuff for button 2 here 

    SharedCode(); 
} 

void Button3Action(object sender, EventArgs e) 
{ 

    // do stuff for button 3 here 

    SharedCode(); 
} 


void Button4Action(object sender, EventArgs e) 
{ 

    // do stuff for button 4 here 

    SharedCode(); 
} 

void SharedCode() 
{ 

    // do stuff for all buttons 

} 
Смежные вопросы