0

请问这是什么问题:

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
4

3 回答 3

2

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

编辑:

忘记Tag是一个对象。将其转换为字符串,您的语句应该可以工作:

switch ((string)this.Tag)
于 2012-06-12T05:07:09.777 回答
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;
      }    
于 2012-06-12T05:13:40.143 回答
1

您的代码应该是:

switch ((string)this.Tag) 
于 2012-06-12T05:12:55.267 回答