C# FormLoadEvent上的switch语句
请问,这有什么问题:C# FormLoadEvent上的switch语句,c#,winforms,switch-statement,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;
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
你可能是想说
this.Tag
。引用标记
属性将需要一个Form2
的实例,因此您会收到错误消息
编辑:
忘记了标签是一个对象。将其转换为字符串,您的语句应该可以工作:
switch ((string)this.Tag)
你可能是想说
this.Tag
。引用标记
属性将需要一个Form2
的实例,因此您会收到错误消息
编辑:
忘记了标签是一个对象。将其转换为字符串,您的语句应该可以工作:
switch ((string)this.Tag)
您的代码应该是:
switch ((string)this.Tag)
您的代码应该是:
switch ((string)this.Tag)
由于
标记
不是静态属性,您将无法通过类名(即Form2)访问它。标记也是object
类型,不能在switch语句中使用。由于您的案例属于字符串类型,您可以尝试以下操作:
string tag = (string) this.Tag;
switch (tag) //error
{
case "desc":
MessageBox.Show("desc");
break;
case "sms":
MessageBox.Show("sms");
break;
}
由于
标记
不是静态属性,您将无法通过类名(即Form2)访问它。标记也是object
类型,不能在switch语句中使用。由于您的案例属于字符串类型,您可以尝试以下操作:
string tag = (string) this.Tag;
switch (tag) //error
{
case "desc":
MessageBox.Show("desc");
break;
case "sms":
MessageBox.Show("sms");
break;
}
我用这个.Tag替换了Form2.Tag,但出现了另一个错误:开关表达式或大小写标签必须是bool、char、string、integral、enum或相应的可空类型我用这个.Tag替换了Form2.Tag,并出现了另一个错误:开关表达式或大小写标签必须是bool、char、string、integral、enum或相应的可空类型请参阅“”。好的,标题中不再有标记。请参阅“”。好的,标题中不再有标记。谢谢。两种解决方案都有效。谢谢。两种解决方案都有效。