从另一个类C#转到下一个表单控件

时间:2013-04-26 08:55:08

标签: c# forms controls

有没有办法从MyClass.cs中调用processTabKey();哪个有助手,并将它用于调用它的每个表单,而不是在每个表单上创建一个方法?

例如Form1.cs来自myMethod()的{​​{1}}来电MyClass.cs,然后转到processTabKey();上的下一个控件?

感谢您的建议。 的 MyClass.cs

Form1.cs

Form1.cs的

  

此方法使用ADD,SUBSTRACT,ENTER或DECIMAL键调用帮助程序以移动到下一个元素。需要帮助程序才能对每个表单使用相同的方法。

public static void TextBoxKeyDown(this TextBox tb, KeyEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Enter:
        case Keys.Add:
            e.SuppressKeyPress = true;
            processTabKey(true);
            break;
        case Keys.Decimal:
            if (tb.Tag == "importe")
            {
                e.SuppressKeyPress = true;
                processTabKey(true);
            }
            break;
        case Keys.Subtract:
            e.SuppressKeyPress = true;
            processTabKey(false);
            break;
    }
}

2 个答案:

答案 0 :(得分:0)

有可能通过创建一个瞬间,但我可以建议一个更合适的方式。您可以创建一个类并将要共享的所有方法放在该类中,然后从表单中调用该类。更有效的方法是对方法进行分组并创建不同的类,因此您不必以所有形式实现所有方法。

答案 1 :(得分:0)

找到了做到这一点的方法...... 的 MyClass.cs

public static void TextBoxKeyDown(this TextBox tb, KeyEventArgs e, Control container)
{
    switch (e.KeyCode)
    {
        case Keys.Enter:
        case Keys.Add:
            e.SuppressKeyPress = true;
            container.SelectNextControl(tb, true, true, false, true);
            //processTabKey(true);
            break;
        case Keys.Decimal:
            if (tb.Tag == "importe")
            {
                e.SuppressKeyPress = true;
                container.SelectNextControl(tb, true, true, false, true);
            }
            break;
        case Keys.Subtract:
            e.SuppressKeyPress = true;
            container.SelectNextControl(tb, false, true, false, true);
            break;
    }
}

<强> Form1.cs的

private void tb_KeyDown(object sender, KeyEventArgs e)
{
    (sender as TextBox).TextBoxKeyDown(e, this);
}