【问题标题】:Move to next form control from another class C#从另一个类 C# 移动到下一个表单控件
【发布时间】:2013-04-26 08:55:08
【问题描述】:

有什么方法可以从具有帮助器的 MyClass.cs 中调用 processTabKey();,并将其用于调用它的每个表单,而不是在每个表单上创建一个方法?

例如,Form1.cs 从包含processTabKey();MyClass.cs 调用myMethod(),然后移动到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;
    }
}

Form1.cs

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

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

【问题讨论】:

  • 向我们展示代码,否则我不确定您要问什么
  • 完成@Habib 这是我正在尝试使用的代码
  • 这是不明智的,这些键已经有用了。 Enter 键操作表单的默认按钮。在多行文本框中,它添加了一个新行。许多键入数字的用户将使用 Decimal 键。输入符号的加法和减法键也是如此。避免让你的 UI 难以使用。并添加完全无法发现的功能。光标和 Tab 键已经可以很好地实现焦点更改,每个用户都知道如何使用它们。

标签: c# forms controls


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    找到了方法... 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 2015-04-15
      相关资源
      最近更新 更多