我正在使用两种形式,在转换到第二种形式之前,我必须先验证第一种形式的输入。
我的第一种形式的代码如下:
private void btnSignIn_Click(object sender, EventArgs e)
{
GetInputs();
IsValidata();
de.Text = string.Format("Hello! {0} {1} {2}{3} {4} {5})",
Fname, Lname, "(U", Unum1, "-", Unum2);
this.Hide();
de.ShowDialog();
}
IsValidata()是一系列验证,它检查输入是否存在以及是否为字符串。
我尝试将它们放在花括号中,但是验证不起作用:
de.Text = string.Format("Hello! {0} {1} {2}{3} {4} {5})",
Fname, Lname, "(U", Unum1, "-", Unum2);
this.Hide();
de.ShowDialog();
我能够加载form2的唯一方法是取出花括号,但是逻辑不正确,并且不能完全验证我的输入。我想念什么?
答案 0 :(得分:0)
这是我的有效数据的代码:
private bool IsValidata()
{
//validate the First Name textbox
if (!IsPresent(txtFirst, "First Name"))
{
return false;
}
if (!StringValidator(Fname))
{
return false;
}
//validate the Last Name textbox
if (!IsPresent(txtLast, "Last Name"))
{
return false;
}
if (!StringValidator(Lname))
{
return false;
}
return true;
}
答案 1 :(得分:0)
您在事件处理程序中缺少一些控制流逻辑。
让我们假设如果输入无效,您只是想向用户显示一个消息框。否则,如果输入有效,则显示第二种形式。
private void btnSignIn_Click(object sender, EventArgs e)
{
GetInputs();
if (IsValidata())
{
de.Text = string.Format("Hello! {0} {1} {2}{3} {4} {5})",
Fname, Lname, "(U", Unum1, "-", Unum2);
this.Hide();
de.ShowDialog();
}
else
{
// Show a message box, with an OK button only
MessageBox.Show("Invalid Input", "Invalid Input", MessageBoxButtons.OK);
}
}
在上面的示例中,我们:
如果您要基于验证结果显示一条消息(即,如果用户仅输入数字而不是字符串),则需要添加该逻辑并进行构造您要显示的消息。
更新:
好,因此您实际上希望验证例程返回失败的验证的类型(如果失败)。
因此,让我们定义一种新类型,验证方法可以返回该类型:
public class ValidationResult
{
public bool IsValid { get; set; }
public string UserMessage { get; set; }
}
现在我们可以更新验证方法:
private ValidationResult IsValidata()
{
//validate the First Name textbox
if (!IsPresent(txtFirst, "First Name"))
{
return new ValidationResult {
IsValid = false,
UserMessage = "Please enter a First Name"
};
}
// rest of valiation rules here,
// setting the UserMessage as appropriate
// If no validation checks fail, then we are valid
return new ValidationResult { IsValid = true };
}
现在,您的事件处理程序可以使用结果了:
private void btnSignIn_Click(object sender, EventArgs e)
{
GetInputs();
var validationResult = IsValidata();
if (validationResult.IsValid)
{
de.Text = string.Format("Hello! {0} {1} {2}{3} {4} {5})",
Fname, Lname, "(U", Unum1, "-", Unum2);
this.Hide();
de.ShowDialog();
}
else
{
// Show a message box, with an OK button only
MessageBox.Show(validationResult.UserMessage, "Invalid Input", MessageBoxButtons.OK);
}
}