【发布时间】:2026-01-27 01:55:01
【问题描述】:
我在Form1 上有此功能,我想对Form2、Form3 等使用相同的功能,而不是在每个表单上重复该功能有什么方法可以让所有人都可以访问它?我尝试创建一个新的Class : Form,然后从表单中调用该函数,但无法正常工作...
public void tb_Leave(object sender, EventArgs e)
{
if ((sender as TextBox).Text.Count() < (sender as TextBox).MaxLength)
(sender as TextBox).Text = (sender as TextBox).Text.PadLeft((sender as TextBox).MaxLength, '0');
}
更新
感谢您的回答,它们工作正常,但如果我想对 X 文本框使用相同的方法怎么办? (就像我对 tb_Leave 函数所做的那样)
我的意思是,使用我的旧方法,我只需选择 X 文本框并将离开事件发送到我的函数,就像你提到的那样,我需要创建一个方法来调用辅助类中的另一个方法......但我仍然需要在每个表单中创建一个方法来调用该类,对吗?虽然,您的回答实际上非常有帮助,因为我只需要使用我的所有帮助程序类创建一个新的 .cs 文件:)
更新 2 我在迁移此方法时遇到问题
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;
}
}
当然我知道processTabKey(); 只能在活动表单上工作,但是如何使它在Form 类之外工作?
【问题讨论】:
-
由于该方法没有任何状态,您可以将其作为静态方法放入静态类中。
-
设置你的方法 public static void 然后你可以通过 formName.methodName() 从其他表单调用它
-
关于第二次更新。这是 TextBox 扩展方法的签名。扩展方法应该遵循它们的规则。请查看csharp.net-tutorials.com/csharp-3.0/extension-methods
标签: c# forms function public-method