当类中发生某些事情时,如何从类中获取数据到窗体?

时间:2012-06-15 23:51:43

标签: c# events delegates

我有一个Windows窗体应用程序,以及一个名为Game的类。

假设Game类有一个属性计数器,我会做一些计算并更改该类中的计数器。所以我想在计数器更改时将文本返回到表单,然后将其分配给表单上的标签。

我可以使用返回类型字符串的事件处理程序吗?因为我必须听它并在发生事情时返回一些东西。

提前致谢。

2 个答案:

答案 0 :(得分:1)

是的,你可以:p

执行此操作的正确方法如下(INotifyPropertyChanged将简单地告诉您哪些属性已更改且未返回实际值,但也是一种好方法):

class CountArgs:EventArgs
{
   public int Count{get;set;} 

    public CountArgs(int c) { 
        Count = c; 
    }
}

class Game
{

   public event EventHandler<CountArgs> CountChanged; // it is possible to define your own delegate here.
   int count;
   public int Count
   {
      get { return count;}
      set { 
            if (count != value) // Only raise the event if the value changes
            {
                 count = value;
                 RaiseCountChangedEvent(value);
            }
   }  
   void RaiseCountChangedEvent(int c)
   {
      if (CountChanged != null) // Check that at least one object is listening to the event
      {
          CountChanged(this,new CountArgs(c));
      }
   }
}

希望我没有犯任何语法错误,因为我用头编码了:)但是你明白了。 您可以使用偶数注册表单并像对待任何控件一样收听。

答案 1 :(得分:0)

您可以使用计时器并将游戏轮询为其当前状态,并使用新值更新您的显示。