![](/img/trans.png)
[英]Validation on Xamarin forms is not displaying any error messages labels on Registration Form
[英]C# Displaying error messages by completing a simple registration form
我是C#的新手,现在学习C编程已有一年了。
我创建了一个窗口表格,要求用户填写注册表格。
当字段未填写或字段未充分使用时,我想在按钮下方显示错误消息。
我使用了以下基本代码:
private void button1_Click(object sender, EventArgs e)
{
if (!isOkay(userTextBox.Text))
{
label5.Text = "Please, enter an username.";
label5.Visible = true;
}
else if (!isOkay(mailTextBox.Text))
{
label5.Text = "Please, enter a mail address.";
label5.Visible = true;
}
else if (!confirmMailTextBox.Text.Equals(mailTextBox.Text) || !isOkay(confirmMailTextBox.Text))
{
label5.Text = "Please, match both mails addresses.";
label5.Visible = true;
}
else if (!isOkay(passwordTextBox.Text))
{
label5.Text = "Please, enter a password.";
label5.Visible = true;
}
else
{
label5.Text = "Valid form, yay !";
label5.Visible = true;
}
}
private Boolean isOkay(string textBoxContent)
{
return (textBoxContent.Length > 0 || textBoxContent.Equals(null));
}
是否有任何优雅或优化的方法来正确执行此操作? 我找到了一些错误提供程序,但显然错误提供程序打开了一个弹出窗口,我只想要“按钮下方的红色错误消息”。
你能帮我些忙吗? :)
给定这样的课程
public class RequiredFieldsError
{
private List<string> errors;
public RequiredFieldsError()
{
errors = new List<string>();
}
public int Count
{
get{return errors.Count;}
}
public void AddField(string errorField)
{
errors.Add(errorField);
}
public override string ToString()
{
if(errors.Count == 0)
return string.Empty;
else
{
string fields = string.Join(Environment.NewLine, errors);
fields = "The following fields contains errors:" + Environment.NewLine + fields;
return fields;
}
}
}
然后您可以将代码更改为
private void button1_Click(object sender, EventArgs e)
{
RequiredFieldsError rfe = new RequiredFieldsError();
if (!isOkay(userTextBox.Text))
rfe.AddField("User name missing, Please, enter an username.";
if (!isOkay(mailTextBox.Text))
rfe.AddField("Email address missing, Please, enter a mail address.";
if (!confirmMailTextBox.Text.Equals(mailTextBox.Text) || !isOkay(confirmMailTextBox.Text))
rfe.AddField("Email address doesn't match the confirmation email");
if (!isOkay(passwordTextBox.Text))
rfe.AddField("Password missing, Please, enter a password.";
if(rfe.Count > 0)
{
// MessageBox.Show(rfe.ToString());
label5.Text = rfe.ToString()
label5.Visible = true;
}
}
这种方法避免了(对于您的用户而言)当他/她收到错误消息时感到不安的情况,他/她对其进行了修复,只是在下次尝试确认表单时收到另一个错误消息。
当然,您的标签应该足够高以显示所有可能的消息,或者仅使用消息框。
我建议也将您的IsOkay
函数更改为
private Boolean isOkay(string textBoxContent)
{
return !string.IsNullOrWitheSpace(textBoxContent));
}
这也将处理仅由一个或多个空格组成的字符串。 (不为null且不为length == 0)
您可以使用ErrorProvider。 它在您的文本框后显示一个错误图标。
例如,对于您的一个文本框:
if (!isOkay(userTextBox.Text))
{
errorProvider1.SetError(userTextBox "yourmessage");
}
else{
errorProvider1.Clear();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.