我想创建一个全局类(所以我只需要写一次,而不是所有的形式),它应该检测全局int是否是某个数字,然后覆盖标签中的文本,说明错误。
例如,当你的名字太短,它会说,你的名字太短。我知道你可以这样做的形式,但我希望整个新的分离类,因为我计划这样做的3个形式,所以我将不得不复制和粘贴相同的错误等...在每一个。
示例:register_menu. cs格式的代码
public void getErrorNumber()
{
if (char_amount_username < 3 || textBox_username.Text == "Username")
{
Variables.error_number = 1;
}
else if (email_adress.Contains("@") != true || textBox_emailadress.Text == "Email adress")
{
Variables.error_number = 2;
}
else if (char_amount_password < 7 || textBox_password.Text == "Password")
{
Variables.error_number = 3;
}
else if (textBox_password.Text != textBox_passwordconfirm.Text)
{
Variables.error_number = 4;
}
else
{
Variables.error_number = 0;
}
}
private void button1_Click_1(object sender, EventArgs e)
{
ErrorCheck();
}
名为GlobalErrorChecker.cs的类中的代码
namespace Xenious
{
internal class ErrorVariable
{
public static int error_number;
public void ErrorCheck()
getErrorNumber();
{
if (ErrorVariable.error_number is 1) ;
{
register_menu.error_msg.Text = "Your username is invalid!\n ⬤ Username must be avaiable\n ⬤ Minimum lenght of username is 4 ";
register_menu.displayERROR(true);
}
if(ErrorVariable.error_number is 2);
{
register_menu.error_message.Visible = true;
register_menu.error_msg.Text = "Your password is invalid!\n ⬤ Minimum lenght of password is 8 ";
register_menu.ICON_password_error.Visible = true;
}
if (ErrorVariable.error_number is 6) ;
{
login_menu.error_message.Visible = true;
login_menu.error_msg.Text = "Your username and password do not match!";
login_menu.ICON_username_error.Visible = true;
login_menu.ICON_password_error.Visible = true;
}
}
}
}
这只是我想如何做的示例代码,我有多个问题。第一个问题是类GlobalErrorChecker.cs根本没有检测到表单中的任何控件。我试图通过在线查找来修复这个问题,但我可以找到任何东西。第二个问题是它说register_menu.ICON_password_error由于保护错误CS0122而不可用...
我尝试了大量不同的方法来实现这个功能,但是我只找到了在两个不同的窗体之间实现这个功能的方法,而没有找到在窗体和新类之间实现这个功能的方法
2条答案
按热度按时间1tuwyuhd1#
考虑使用FluentValidation之类的验证库。
首先创建一个具有要验证的属性的类,例如
创建一个validator。
创建类的新示例,在本例中为
Person
。从控件填充值,然后通过Validate
执行验证。下面是一个模型,它使用StringBuilder创建一个可以呈现给用户的字符串。
如果需要检查个别错误,如PropertyName(要验证的属性的名称)和ComparisonValue(属性不应等于的值),请深入研究ValidationResult。
注意电子邮件地址验证程序只检查电子邮件地址是否有
@
,因此如果您需要更多的自定义工作。jhdbpxl92#
创建静态Extension Method是**“创建全局类(所以我只需要写一次......)"**的一种方法。
首先询问“确定有效表单需要哪些信息?”在interface中定义这些要求:
现在为实现
IValidate
的“any”表单声明一个扩展方法(这是您所询问的全局类)。Form类将能够使用
this
调用扩展。表单验证示例
对于3个表单中的每一个,实现接口,这意味着3个表单类承诺或约定提供接口所需的信息(在本例中,通过从文本框中检索文本)。
然后在任何文本框失去焦点或接收到Enter键时调用扩展方法。
其中: