Как показать / скрыть ярлык с if и else - PullRequest
0 голосов
/ 07 марта 2019

Я студент и я экспериментирую с c # (я нуб) Мой код:

private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text == "test")
        {
            label1.Show();
            label2.Hide();
        }
        else
            label1.Hide();
        label2.Show();
    }

Моя проблема заключается в следующем: У меня есть две метки, одна кнопка и одно текстовое поле.

Когда TextBox равен "test", если я нажимаю на него, я хочу показать label1 и скрыть label2.

Если TextBox не содержит «test», я хочу скрыть label1 и показать label2.

Теперь, когда я нажимаю кнопку без текста «test»: label2 показывает, а label1 скрыто

Но если текст "тест" label1 показывает, а label2 все еще показывает, почему?

Ответы [ 2 ]

3 голосов
/ 07 марта 2019

Как утверждает JayV, вам не хватает фигурных скобок.Причина того, что label1 все равно будет отображаться (если у вас есть текст «test»), заключается в том, что без скобок следующий оператор будет (и будет только) выполняться как часть Else (см. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/if-else)и что-либо после этого непосредственного следующего оператора не является частью if-else, то есть то, что вы написали:

  • Если текст в textbox1 является «тестовым», тогда показать label1, скрыть label2.
  • Если текст в textbox1 не является «тестовым», то скрыть label1.
  • Независимо от того, что за текст в коде, будет выполняться финальная label2.show.

Эффективно вы написали

    if (textBox1.Text == "test")
    {
        label1.Show();
        label2.Hide();
    }
    else
    {
        label1.Hide();
    }

    label2.Show();

Когда вы хотите:

    if (textBox1.Text == "test")
    {
        label1.Show();
        label2.Hide();
    }
    else
    {
        label1.Hide();
        label2.Show();
    }

Я настоятельно рекомендую вам посмотреть на отладку, поскольку пошаговое выполнение кода быстропоказать вам это (см. https://docs.microsoft.com/en-us/visualstudio/debugger/debugger-feature-tour?view=vs-2017)

1 голос
/ 07 марта 2019

Вы забыли скобки в выражении else:

private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text == "test")
        {
            label1.Show();
            label2.Hide();
        }
        else
        {
            label1.Hide();
            label2.Show();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...