我有一个应用程序,用户输入他们的名字和重量,它将转换重量。我想知道是否有一种方法,如果用户的名字输入少于2个字符,“计算”按钮将被禁用,并且当超过2个字符时将重新启用。我需要创建一个isValid方法,当我运行它时,我的应用程序不会禁用该按钮。
public bool isValid (String text)
{
if (string.IsNullOrWhiteSpace(Name.Text) || Name.Text.Length < 2)
{
return false;
}
else
{
return true;
}
}
private void ValidateName()
{
while (isValid(Name.Text) == false)
{
this.ConvertBtn.Enabled = false;
}
}
答案 0 :(得分:0)
使用输入名称的textbox的textChanged事件。从该事件中,您可以调用isValid方法
答案 1 :(得分:0)
private TextBox_TextChanged(object sender, EventArgs e)
{
TextBox myTextBox = (TextBox)sender;
this.ValidateName(myTextBox.text);
}
在这种情况下,当IsValid
中发生任何更改时,将执行TextBox
方法。
我认为在你的情况下Leave Event会更好,因为它只会在用户离开控件时执行
private void TextBox_Leave(object sender, EventArgs e)
{
TextBox myTextBox = (TextBox)sender;
this.ValidateName(myTextBox.text);
}
并将您的IsValid
方法更改为使用传递的参数
public bool isValid (String text)
{
cosnt int MIN_LENGTH = 2;
if (string.IsNullOrWhiteSpace(text) == true) return false;
if (text.Length < MIN_LENGTH) return false;
return true;
}
然后,您不需要Validate
方法
private void ValidateName(string name)
{
this.ConvertBtn.Enabled = this.IsValid(name);
}
答案 2 :(得分:0)
将trim()添加到Name.Text,因为场景可能是名称不应包含前置和后置空格。如果没有要求,你可以删除trim()。
const int LENGTH_MIN_NAME = 2;
private void Name_TextChanged(object sender, EventArgs e)
{
this.ConvertBtn.Enabled = isValid(Name.Text.Trim());
}
public bool isValid(String text)
{
return (!(string.IsNullOrWhiteSpace(text) || text.Length <= LENGTH_MIN_NAME));
}