我想知道是否有更有效的方法来格式化以下代码:
private void nmudc1_Enter(object sender, EventArgs e)
{
SelectAllNumericalUpDownText(nmudc1);
}
private void nmudc1_Click(object sender, EventArgs e)
{
SelectAllNumericalUpDownText(nmudc1);
}
private void nmudc2_Enter(object sender, EventArgs e)
{
SelectAllNumericalUpDownText(nmudc2);
}
private void nmudc2_Click(object sender, EventArgs e)
{
SelectAllNumericalUpDownText(nmudc2);
}
等等。
如果之前或其他地方已经提出这个问题我很抱歉,我认为答案相对简单。不幸的是,到目前为止我找不到合适的答案是不成功的。
我曾考虑尝试插入一个数组或一个对象,但我真的不知道如何对这样的函数执行此操作。
谢谢。
答案 0 :(得分:0)
由于代码示例中的所有事件处理程序都具有相同的方法签名,因此您只需使用相同的方法来处理所有事件:
private void NumericUpDown_event(object sender, EventArgs e)
{
SelectAllNumericalUpDownText(sender as NumericUpDown);
}
当然,假设您的发件人对象实际上是NumericUpDown
。
答案 1 :(得分:0)
您只能创建一个事件功能,并将发件人作为参数发送到SelectAllNumericalUpDownText
功能。
将所有事件注册到此功能:
nmudc1.Click += nmudc_Event;
nmudc1.Enter += nmudc_Event;
nmudc2.Click += nmudc_Event;
nmudc2.Enter += nmudc_Event;
该功能的通用实现:
private void nmudc_Event(object sender, EventArgs e)
{
SelectAllNumericalUpDownText(sender as <TYPE>);
}
答案 2 :(得分:0)
您可以使用以下替代方法:
private void NumericUpDown_Event(object sender, EventArgs e)
{
if (!(sender is <controltype> nump))
return;
SelectAllNumericalUpDownText(nump);
}
如果发件人的类型不是&lt;
,请不要调用该方法。 controltype&gt;。因此,您已经使用了通用的EventArgs类,您可以将Enter / Click事件下标到此方法。