FormLoadEvent上的switch语句

时间:2012-06-12 05:05:23

标签: c# winforms switch-statement

请问,这有什么问题:

private void Form2_Load(object sender, EventArgs e)
{
    switch (Form2.Tag) //error
    {
        case "desc":
            MessageBox.Show("desc");
        break;

        case "sms":
            MessageBox.Show("sms");
        break;
    }
}

错误:

An object reference is required for the non-static field, method, or property System.Windows.Forms.Control.Tag.get

3 个答案:

答案 0 :(得分:2)

你可能想说this.Tag。引用Tag属性将需要Form2的实例,因此会收到您收到的错误消息。

编辑:

忘记Tag是一个对象。将它转换为字符串,你的陈述应该有效:

switch ((string)this.Tag)

答案 1 :(得分:2)

由于Tag不是静态属性,因此您无法通过类名即Form2访问它。 Tag也是object类型,您不能在switch语句中使用它。由于您的案例属于字符串类型,您可以尝试以下方法:

 string tag = (string) this.Tag;
 switch (tag) //error
      {
           case "desc":
                MessageBox.Show("desc");
                break;
           case "sms":
                MessageBox.Show("sms");
               break;
      }    

答案 2 :(得分:1)

您的代码应为:

switch ((string)this.Tag)