C# 从另一个C类移动到下一个窗体控件#

C# 从另一个C类移动到下一个窗体控件#,c#,forms,controls,C#,Forms,Controls,有没有办法调用processTabKey()来自MyClass.cs,它有助手,并将其用于调用它的每个窗体,而不是在每个窗体上生成一个方法 例如Form1.cs从MyClass.cs调用myMethod(),其中包含processTabKey()

有没有办法调用
processTabKey()来自MyClass.cs,它有助手,并将其用于调用它的每个窗体,而不是在每个窗体上生成一个方法

例如
Form1.cs
MyClass.cs
调用
myMethod()
,其中包含
processTabKey()Form1.cs上的下一个控件

谢谢你的建议。 MyClass.cs

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;
    }
}
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;
    }
}
private void tb_KeyDown(object sender, KeyEventArgs e)
{
    (sender as TextBox).TextBoxKeyDown(e, this);
}
Form1.cs

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;
    }
}
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;
    }
}
private void tb_KeyDown(object sender, KeyEventArgs e)
{
    (sender as TextBox).TextBoxKeyDown(e, this);
}
此方法调用辅助对象,以便使用ADD、SUBSTRACT、ENTER或DECIMAL键移动到下一个元素。为了对每个表单使用相同的方法,需要助手


创造一个瞬间是可能的,但我可以建议一个更合适的方法。您可以创建一个类并将所有要共享的方法放在该类中,然后从表单中调用该类。更有效的方法是将方法分组并创建不同的类,这样就不必以各种形式实现所有方法

找到了做这件事的方法。。。 MyClass.cs

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;
    }
}
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;
    }
}
private void tb_KeyDown(object sender, KeyEventArgs e)
{
    (sender as TextBox).TextBoxKeyDown(e, this);
}
Form1.cs

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;
    }
}
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;
    }
}
private void tb_KeyDown(object sender, KeyEventArgs e)
{
    (sender as TextBox).TextBoxKeyDown(e, this);
}

告诉我们代码,否则我不确定你想问什么,那是我试图使用的代码这是不明智的,这些键已经有了用途。回车键操作窗体的默认按钮。在多行文本框上添加新行。许多键入数字的用户将使用十进制键。以及输入符号的加减键。避免让你的用户界面变得神秘。以及添加完全无法发现的功能。焦点更改已经通过光标键和制表键巧妙地实现了,每个用户都知道如何使用它们。