0

Windowsフォームアプリと、ゲームと呼ばれるクラスがあります。

ゲームクラスに属性カウンターがあり、そのクラスでいくつかの計算を行ってカウンターを変更するとします。したがって、カウンターが変更されるたびにテキストをフォームに返し、それをフォームのラベルに割り当てたいと思います。

タイプ文字列を返すイベントハンドラーでそれを行うことはできますか?私はそれを聞いて、何かが起こったときはいつでも何かを返さなければならないので。

前もって感謝します。

4

2 に答える 2

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));
      }
   }
}

うまくいけば、私はこれを頭でコーディングしたので、構文の間違いをしませんでした:)しかし、あなたはその考えを理解します。フォームをevenに登録して、他のコントロールと同じように聞くことができます。

于 2012-06-16T00:04:13.947 に答える
0

タイマーを使用してゲームの現在の状態をポーリングし、新しい値で表示を更新することができます。

于 2012-06-16T00:03:22.280 に答える