2015-03-30 2 views
-1

Мне просто интересно, можно ли упростить эти коды? У меня есть несколько текстовых полей с тем же событием textchangeУпрощение обработчика событий TextChange для нескольких элементов управления TextBox

private void txtOvertimeHours_TextChanged(object sender, EventArgs e) 
    { 
     if (txtOvertimeHours.Text.Length <= 0 || 
      txtOvertimeHours.Text == null || 
      txtOvertimeHours.Text == "0.00" || 
      txtOvertimeHours.Text == "0" || 
      txtOvertimeHours.Text == "0.0") 
     { 
      txtOvertimeHours.Text = "0.00"; 
     } 

    } 

    private void txtAllowance_TextChanged(object sender, EventArgs e) 
    { 
     if (txtAllowance.Text.Length <= 0 || 
      txtAllowance.Text == null || 
      txtAllowance.Text == "0.00" || 
      txtAllowance.Text == "0" || 
      txtAllowance.Text == "0.0") 
     { 
      txtAllowance.Text = "0.00"; 
     } 
    } 

// и так далее

+1

Winforms, webforms, wpf, what? –

+0

winform sir @JohnSaunders – user4692866

ответ

2

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

private void ZeroOutTextBox_TextChanged(object sender, EventArgs e) 
{ 
    TextBox txt = (TextBox) sender; 

    if (txt.Text.Length <= 0 || 
     txt.Text == null || 
     txt.Text == "0.00" || 
     txt.Text == "0" || 
     txt.Text == "0.0") 
    { 
     txt.Text = "0.00"; 
    } 
} 

Возможно, вы также можете упростить условное обозначение. Я не тестировал код:

private void ZeroOutTextBox_TextChanged(object sender, EventArgs e) 
{ 
    decimal result; 
    TextBox txt = (TextBox) sender; 

    if (String.IsNullOrWhitespace(txt.Text) || 
     (decimal.TryParse(txt.Text, out result) && result == 0M)) 
    { 
     txt.Text = "0.00"; 
    } 
} 
0
private void txtOvertimeHours_TextChanged(object sender, EventArgs e) 
{ 
    ZeroOutTextBox(txtOvertimeHours); 
} 

private void txtAllowance_TextChanged(object sender, EventArgs e) 
{ 
    ZeroOutTextBox(txtAllowance); 
} 

private void ZeroOutTextBox(Textbox txt) 
{ 
    if (txt.Text.Length <= 0 || 
     txt.Text == null || 
     txt.Text == "0.00" || 
     txt.Text == "0" || 
     txt.Text == "0.0") 
    { 
     txt.Text = "0.00"; 
    } 
} 
+0

Большое вам спасибо sir – user4692866

+0

Если все методы обработчика событий действительно идентичны, тогда @JohnSaunders лучше. – RenniePet

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