0

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

例如Form1.cs调用哪个包含myMethod()然后移动到下一个控件?MyClass.csprocessTabKey();Form1.cs

谢谢指教。 我的类.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;
    }
}

Form1.cs

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

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

2 回答 2

0

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

于 2013-04-26T09:22:37.483 回答
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);
}
于 2013-04-26T09:26:33.433 回答