2013-04-26 86 views
0

有没有办法从MyClass.cs中调用processTabKey();,它有助手,并将它用于调用它的每个窗体,而不是在每个窗体上创建一个方法?从另一个类转移到下一个窗体控件C#

例如Form1.cs调用从MyClass.cs包含processTabKey();,然后移动到下一个控件上Form1.csmyMethod()

感谢您的建议。 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,。减去,ENTER或DECIMAL键移动到下一个元素的帮手。需要帮助程序才能为每个表单使用相同的方法。

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

显示我们的代码,否则我真的不知道你是什么试图问 – Habib 2013-04-26 08:56:35

+0

完成@Habib这就是我试图使用的代码 – 2013-04-26 08:59:58

+0

这是不明智的,这些密钥已经有用了。 Enter键操作表格的默认按钮。在多行文本框中添加一个新行。十进制键将被许多输入数字的用户使用。正如加号和减号键输入一个符号。避免让你的用户界面神秘使用。并添加完全不可发现的功能。焦点更改已经通过光标和制表键完美实现,每个用户都知道如何使用它们。 – 2013-04-26 12:04:30

回答

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

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

相关问题