title: An object reference is required to access non-static member
body: <p>I have a timer and I want to put timer callbacks
  into separate functions, however, I get this error.</p>
  
  <blockquote>
    <p>An object reference is required to access non-static field, method, or property ''...</p>
  </blockquote>
  
  <p>If I declare these callbacks as delegate events and 
  member variables as static, it works fine. Should I leave it that way?</p>
  
  <pre><code>class MainClass
  {
      private Timer _timer = null;
      private TimeSpan _millisecs;
  
      public static void Main (string[] args)
      {
          Application.Init();
          MainWindow win = new MainWindow();
  
          Label lbl = new Label();
          lbl.Text = "00:00";
  
          Table tbl = new Table(2, 2, true);
          tbl.Name = "tbl";
  
          Button btn = new Button("Start");
          tbl.Attach(lbl, 0, 2, 0, 1);
          tbl.Attach(btn, 0, 1, 1, 2);
          Button btn_stop = new Button("Stop");
          tbl.Attach(btn_stop, 1, 2, 1, 2);
  
          btn.Clicked += StartClick;
          btn_stop.Clicked += StopClick;
  
          win.Add(tbl);
          win.ShowAll();
  
          Application.Run ();
      }
  
      private void StartClick(object obj, EventArgs args)
      {
          if (_timer == null) {
              _timer = new Timer();
              _timer.Elapsed += delegate(object sender, ElapsedEventArgs e) {
                  _millisecs = _millisecs.Add(new TimeSpan(0, 0, 0, 0, 50));
                  lbl.Text = new DateTime(_millisecs.Ticks).ToString("ss:ff");
              };
              _timer.Interval = 50;
              _timer.Enabled = true;                  
          }
  
          _timer.Start();             
      }
  
      private void StopClick(object obj, EventArgs args)
      {
          _timer.Stop();          
      }
  
  }
  </code></pre>