1
重構下面各個按鈕點擊事件的最佳方式是什麼?可能嗎。他們都在做同樣的事情,單獨改變他們每個人都是背後的痛苦。重構多個事件處理程序以使代碼可維護
MainWindow.xaml.cs
private void Button1_Click(object sender, RoutedEventArgs e)
{
Button1_Add();
}
private void Button1_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button1.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button2_Click(object sender, RoutedEventArgs e)
{
Button2_Add();
}
private void Button2_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button2.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button3_Click(object sender, RoutedEventArgs e)
{
Button3_Add();
}
private void Button3_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button3.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button4_Click(object sender, RoutedEventArgs e)
{
Button4_Add();
}
private void Button4_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button4.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button5_Click(object sender, RoutedEventArgs e)
{
Button5_Add();
}
private void Button5_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button5.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button6_Click(object sender, RoutedEventArgs e)
{
Button6_Add();
}
private void Button6_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button6.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button7_Click(object sender, RoutedEventArgs e)
{
Button7_Add();
}
private void Button7_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button7.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button8_Click(object sender, RoutedEventArgs e)
{
Button8_Add();
}
private void Button8_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button8.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button9_Click(object sender, RoutedEventArgs e)
{
Button9_Add();
}
private void Button9_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button9.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
private void Button0_Click(object sender, RoutedEventArgs e)
{
Button0_Add();
}
private void Button0_Add()
{
var tb = Keyboard.FocusedElement as TextBox;
try
{
var keypadObject = new Keypad();
keypadObject.AppendValue(tb, Button0.Content.ToString());
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
Keypad.cs
public void AppendValue(TextBox tb, string valueToAppend)
{
if (tb.Text.Length < 6 && tb.Name != "RemainingTextBox")
{
if (tb.Text.IndexOf(".") == -1)
{
int beforeDotLength = tb.Text.Length;
if (beforeDotLength < 3)
{
tb.AppendText(valueToAppend);
}
}
else if (tb.Text.IndexOf(".") > -1)
{
int dotPosition = tb.Text.IndexOf(".");
int afterDotLength = tb.Text.Substring(dotPosition).Length;
if (afterDotLength < 3)
{
tb.AppendText(valueToAppend);
}
}
}
}
這很好。謝謝! – methuselah 2014-09-20 17:08:56