2014-10-20 2 views
0

Ищете рефакторинг кода приложения. У меня есть графический интерфейс пользователя, который имеет несколько одинаковых событий, которые отражаются на различных лейблах, текстовые поля и т.д. ...Объединение нескольких методов событий

Например:

private void textBox1_Enter(object sender, EventArgs e) 
    { 
     textBox1.BackColor = Color.LightCyan; 
    } 

и

private void textBox2_Enter(object sender, EventArgs e) 
    { 
     textBox2.BackColor = Color.LightCyan; 
    } 

Я просто присвоить эти методы для события в свойствах объекта в Visual Studio. Есть ли эффективный способ объединить несколько методов событий для очистки кода? Благодаря!

+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

3

Определение одного события, как:

private void textBox_Enter(object sender, EventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 
    if (textBox != null) 
     textBox.BackColor = Color.LightCyan; 
} 

, а затем назначить это событие для всех ваших TextBox Введите событие, как:

textBox1.Enter += textBox_Enter; //Same event handler 
textBox2.Enter += textBox_Enter; //Same event handler 
0

Если оба обработчики событий делают то же самое точное логика, как вы, вероятно, перечисленные здесь, просто создайте 1 обработчик событий и назначьте его обоим компонентам.

private void TextBox_Enter(object sender, EventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 
    if (textBox != null) { 
     textBox.BackColor = Color.LightCyan; 
    } 
} 
0

Чтобы разработать немного, вы можете использовать этот подход, даже если вы хотите выполнять различные действия в зависимости от элемента управления, который активировал событие.

private void textBox_Enter(object sender, EventArgs e) 
{ 
    //Check if the sender is textBox1 
    if(ReferenceEquals(sender, textBox1)) 
    { 
     //Perform action on textBox1 
    } 

    //Check if the sender is textBox2 
    if(ReferenceEquals(sender, textBox2)) 
    { 
     //Perform action on textBox2 
    } 
} 
Смежные вопросы