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