如果文本框为空,如何禁用按钮

时间:2016-06-26 16:57:08

标签: c# windows forms winforms

首先抱歉我的英语不好。 我是C#的初学者,我制作了一个Windows窗体应用程序,但如果文本框为空,我就无法禁用一个按钮。 我尝试了一些Enabled方法,但它们没有用。希望有人可以帮我解决这个问题。非常感谢你

public partial class ModulusForm : Form
{
    public double nje;
    public double dy;
    public double pergjigja;
    public double rezultati;
    public ModulusForm()
    {

        InitializeComponent();
        Button btn = new Button();
        btn.Click += new EventHandler(butoniGjenero_Click); 
    }
    private void butoniPerfundo_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    private void butoniGjenero_Click(object sender, EventArgs e)
    {
        Random random = new Random();
        nje = random.Next(1, 100);
        dy = random.Next(1, 100);
        if (nje > dy)
        { textboxPyetja.Text = "X = " + nje + "    " + "dhe" + "    " + "Y = " + dy; }
        else if (nje > dy)
        {
            nje = random.Next(1, 100);
            dy = random.Next(1, 100);
        }
        rezultati = nje / dy;
    }
    private void butoniPastro_Click(object sender, EventArgs e)
    {
            textboxPyetja.Clear();
            textboxPergjigja.Clear();
            textboxPergjigjaSakt.Clear();
    }
    private void butoniVerteto_Click(object sender, EventArgs e)
    {
        try
        {
            pergjigja = double.Parse(textboxPergjigja.Text);
        }
        catch
        {
            var informim = MessageBox.Show("Rishiko fushat!", "Verejtje", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        if (textboxPergjigja.Text == "")
        {
            //nothin' baby
        }
        else
        {
            if (textboxPyetja.Text == "")
            {
                var informim = MessageBox.Show("Fusha e pyetjes eshte null!", "Verejtje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (pergjigja == rezultati)
                {
                    textboxPergjigjaSakt.Text = "Pergjigja eshte e sakte";
                }
                else
                {
                    textboxPergjigjaSakt.Text = "Gabim." + " " + "Pergjigja e sakte eshte: " + "" + rezultati;
                }
                comboboxVargu.Items.Add(nje + " / " + dy + " = " + rezultati);
            }
        }
    }
}

}

6 个答案:

答案 0 :(得分:3)

归功于@Cody Gray,已经暗示过这一点;我刚刚扩展了它,因此您可以看到如何实现以及如何工作

<强>概述
您可以在textboxPergjigja.Text的文字发生变化时为事件处理程序连接。

在您创建的处理程序中,您可以评估您的按钮是否应为Enabled - 使用string.IsNullOrWhiteSpace()检查进行设置。

<强>首先
在表单的构造函数中,订阅textboxPergjigja.Text文本框的TextChanged事件。

像这样:

public ModulusForm()
{
    InitializeComponent();
    Button btn = new Button();
    btn.Click += new EventHandler(butoniGjenero_Click);

    // Add the subscription to the event:
    textboxPergjigja.TextChanged += textboxPergjigja_TextChanged;
}

下一步:
添加一个与该事件的正确委托签名匹配的处理程序。

像这样:

public textboxPergjigja_TextChanged(object sender, TextChangedEventArgs e)
{
    // If the text box is not "empty", it will be enabled;
    // If the text is "empty", it will be disabled.
    butoniVerteto.Enabled = !string.IsNullOrWhiteSpace(textBoxPergjigja.Text);            
}

这样,每当textBoxPergjigja文本框中的文本发生更改时;评估已运行,您的按钮将始终正确启用/禁用。

希望这有帮助! :)

其他信息
你也可以使用textBox.Text.IsNullOrEmpty(),它仍然有用 - 正如@Cody

所建议的那样

由于以下原因,我使用string.IsNullOrWhiteSpace()而不是textBox.Text.IsNullOrEmpty()

  • .IsNullOrEmpty()方法检查textBox.Textnull还是总字符数等于0。

这可能造成的问题是,如果用户在文本框中输入空格,则不再是Emptynull;因此,此检查将返回true。如果程序的逻辑要求在文本框中输入实际值,则此逻辑可能存在缺陷。

  • 另一方面:string.IsNullOrWhiteSpace()检查将检查3个条件 - 如果输入stringnullEmpty 包含只有空格字符(空格,换行符等),也是。

我希望这会增加一些额外的成果,为你做出明智的决定。

答案 1 :(得分:2)

希望它有用!

private void YourTextBox_TextChanged(object sender, EventArgs e)
{
    if (String.IsNullOrEmpty(YourTextBox.Text))
        YourButton.Enabled = false;
    else
        YourButton.Enabled = true;
}

答案 2 :(得分:1)

试试这个:

if (String.IsNullOrEmpty(textboxPergjigja.Text))
    butoniVerteto.Enabled = false; 
else 
    butoniVerteto.Enabled = true;

答案 3 :(得分:1)

处理TextBox的TextChanged事件。 (在设计时双击文本框控件,这将自动为您创建文本更改事件。)

private void textboxPyetja_OnTextChanged(..blah blah)
{
    if(String.IsNullOrWhitespace(txtTargetTextbox.Text)
    {
        //disable your control
    }
    else
    {
        //enable your control
    }
}

答案 4 :(得分:0)

在txtbox中添加编辑文本的事件。当文本更改时,启用按钮

答案 5 :(得分:0)

textBox1更改为文本框名称,然后将button1更改为按钮名称

if (textBox1.Text == "")
  {
    button1.Enabled = false;
  }
else
  button1.Enabled = true;