用三个附加参数重载一个事件处理程序
问题描述:
是否有可能用参数重载一个事件处理程序?如果不是,传递额外3个参数的最佳方式是什么?用三个附加参数重载一个事件处理程序
我不断收到错误消息:
这里是什么,我想实现一个画面:
MainWindow.xaml.cs
public bool DotControl { get; set; }
public int Count { get; set; }
TextBox Tb = Keyboard.FocusedElement as TextBox;
private void RemoveLastButton_Click(object sender, RoutedEventArgs e, bool DotControl, int Count, TextBox tb)
{
if (Tb != null && Tb != DriverTextBox)
{
try
{
var keypadObject = new Keypad();
keypadObject.RemoveLast(Tb, DotControl, Count);
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
else
{
TotalTextBox.Focus();
}
}
private void ResetButton_Click(object sender, RoutedEventArgs e, bool DotControl, int Count, TextBox tb)
{
if (Tb != null && Tb != DriverTextBox)
{
try
{
var keypadObject = new Keypad();
keypadObject.Reset(Tb, DotControl, Count);
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
else
{
TotalTextBox.Focus();
}
}
Keypad.cs
// Backspace textbox
public void RemoveLast(TextBox tb, bool dotControl, int count)
{
if (tb.Text.Length > 0)
{
if (char.IsDigit(tb.Text[tb.Text.Length - 1])) count = 0;
else
{
dotControl = false;
count = 0;
}
tb.Text = tb.Text.Remove(tb.Text.Length - 1, 1);
}
}
// Clear textbox
public void Reset(TextBox tb, bool dotControl, int count)
{
dotControl = false;
count = 0;
tb.Text = "";
}
答
事件处理程序具有特定的签名,因此请从事件处理程序调用您的自定义方法。例如:
private void RemoveLastButton_Click(object sender, RoutedEventArgs e)
{
RemoveLastButton(DotControl, Count, tb)
}
private void RemoveLastButton(bool DotControl, int Count, TextBox tb)
{
if (Tb != null && Tb != DriverTextBox)
{
try
{
var keypadObject = new Keypad();
keypadObject.RemoveLast(Tb, DotControl, Count);
}
catch (Exception)
{
TotalTextBox.Focus();
}
}
else
{
TotalTextBox.Focus();
}
}
但你有你甚至不需要被路过的那些参数(DotControl, tb, Count
)新RemoveLastButton
方法,因为他们是你的类的属性反正所以访问的例子。这意味着你甚至不需要分解成像这样的新方法,只需将该代码放入事件处理程序中即可,而不必更改事件处理程序的签名。
+0
谢谢,这个作品完美。 – methuselah 2014-09-19 18:28:26
AFAIK事件处理程序具有特定的签名 - 您为什么不直接从事件处理程序调用您的自定义方法?你可以通过你喜欢的任何东西。 – Mashton 2014-09-19 11:53:13
我认为'dotControl'和'Count'应该是字段/属性 – 2014-09-19 11:54:46
@JeroenvanLangen - 谢谢,问题已经更新,我的逻辑正确吗? – methuselah 2014-09-19 12:02:29