我正在尝试从静态方法设置toolStripStatusLabel
:
public static void loggedChanged()
{
if (SM_Class.logged)
toolStripStatusLabel1.Text = "Conectado: " + SM_Class.logged_user.username;
else
{
toolStripStatusLabel1.Text = "Desconectado";
}
}
这来自类
中的另一个静态声明public static Boolean logged
{
get { return _logged; }
set
{
if (_logged != value)
{
_logged = value;
Main.loggedChanged();
}
}
}
我收到错误:
非静态字段,方法或属性'WindowsFormsApplication1.Main.toolStripStatusLabel1'
需要对象引用
我应该更改哪些内容才能更新toolstriplabel
?提前谢谢。
答案 0 :(得分:0)
您只提供了部分代码,但问题似乎是loggedChanged
是静态的,toolStripStatusLabel1
不是。要么使后者静态,要么使前者非静态。我建议同时使logged
和loggedChanged
非静态,因为没有充分理由使事情变得不稳定是不好的做法。
答案 1 :(得分:0)
您无法从静态方法访问非静态内容,除非您将其作为参数传递。
class MyClass{
String nonstaticField;
static String staticField;
static Foo(String obj){
nonstaticField.Trim(); // no
staticField.Trim() // yes
obj.Trim(); // yes
}
}
所以你toolStripStatusLabel1
也必须是静态的。如果不了解更多内容,拥有它的最佳位置就像现在在同一个类中的静态字段一样。