在WinForm程序的某个框中更改输入时清除所有文本框

时间:2016-09-12 05:00:27

标签: c# winforms

我有一个应用程序,用户输入他们的名字和重量,它将转换重量。我想知道是否有一种方法,如果用户的名字输入少于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;
        }

    }

3 个答案:

答案 0 :(得分:0)

使用输入名称的textbox的textChanged事件。从该事件中,您可以调用isValid方法

答案 1 :(得分:0)

使用TextChanged Event

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));
}