格式化几个几乎相同功能的更有效方法?

时间:2018-04-10 05:43:17

标签: c# .net function optimization format

我想知道是否有更有效的方法来格式化以下代码:

    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);
    }

等等。

如果之前或其他地方已经提出这个问题我很抱歉,我认为答案相对简单。不幸的是,到目前为止我找不到合适的答案是不成功的。

我曾考虑尝试插入一个数组或一个对象,但我真的不知道如何对这样的函数执行此操作。

谢谢。

3 个答案:

答案 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事件下标到此方法。