非静态字段,方法或属性'WindowsFormsApplication1.Main.toolStripStatusLabel1'需要对象引用

时间:2013-11-15 18:27:15

标签: c# object methods static

我正在尝试从静态方法设置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?提前谢谢。

2 个答案:

答案 0 :(得分:0)

您只提供了部分代码,但问题似乎是loggedChanged是静态的,toolStripStatusLabel1不是。要么使后者静态,要么使前者非静态。我建议同时使loggedloggedChanged非静态,因为没有充分理由使事情变得不稳定是不好的做法。

答案 1 :(得分:0)

您无法从静态方法访问非静态内容,除非您将其作为参数传递。

class MyClass{
   String nonstaticField;
   static String staticField;

   static Foo(String obj){
      nonstaticField.Trim(); // no
      staticField.Trim()     // yes
      obj.Trim();            // yes
    }
}

所以你toolStripStatusLabel1也必须是静态的。如果不了解更多内容,拥有它的最佳位置就像现在在同一个类中的静态字段一样。