Visual Studio在表达式中不允许使用“else”元素

时间:2015-01-28 17:35:08

标签: c#

  private void buttan_Click_2(object sender, EventArgs e)
    {
        string a = textBox1.Text;

        if (a == "Well")
        {
            pictureBox1.Visible = false;
        }
        {
            axWindowsMediaPlayer1.URL = @"c:\Users\Galym\Desktop\123.mp4";
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

        else
        {  MessageBox.Show("Try again");
        }

不允许的元素"否则"在表达中 帮我找错误

2 个答案:

答案 0 :(得分:1)

看起来if语句的语法有些偏差。

private void buttan_Click_2(object sender, EventArgs e)
    {
        string a = textBox1.Text;

        if (a == "Well")
        {
            pictureBox1.Visible = false;

            axWindowsMediaPlayer1.URL = @"c:\Users\Galym\Desktop\123.mp4";
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

        else
        {  
            MessageBox.Show("Try again");
        }

假设您想要在命中if语句时运行所有三行代码,那么这应该适合您。

你这样做的方式,编译器并不认为if语句有一个else块,因此它会在else处抛出一个错误,因为它没有被配对。

else语句必须在任何if或者if if之后直接出现。

答案 1 :(得分:1)

您的else被评估为第二个代码块的else表达式(括号周围的表达式块),在这种情况下:

{
    axWindowsMediaPlayer1.URL = @"c:\Users\Galym\Desktop\123.mp4";
    axWindowsMediaPlayer1.Ctlcontrols.play();
}

由于该块不包含if(代码中的if在该块之前),else无效,这就是编译器所说的。< / p>

如果您希望在if表达式为真时评估这两行,请执行以下操作:

if (a == "Well")
{
    pictureBox1.Visible = false;
    axWindowsMediaPlayer1.URL = @"c:\Users\Galym\Desktop\123.mp4";
    axWindowsMediaPlayer1.Ctlcontrols.play();
}
else
{  
    MessageBox.Show("Try again");
}

否则,如果你绝对想要一个代码块(由于某种原因,虽然该代码中绝对没有),你应该将该块放在另一个块中,如:

if (a == "Well")
{
    pictureBox1.Visible = false;

    {
        axWindowsMediaPlayer1.URL = @"c:\Users\Galym\Desktop\123.mp4";
        axWindowsMediaPlayer1.Ctlcontrols.play();
    }
}
else
{  
    MessageBox.Show("Try again");
}

这绝对没有做任何事情(因为你没有任何变量,没有范围问题),但它是合法的。