Windowsフォームアプリと、ゲームと呼ばれるクラスがあります。
ゲームクラスに属性カウンターがあり、そのクラスでいくつかの計算を行ってカウンターを変更するとします。したがって、カウンターが変更されるたびにテキストをフォームに返し、それをフォームのラベルに割り当てたいと思います。
タイプ文字列を返すイベントハンドラーでそれを行うことはできますか?私はそれを聞いて、何かが起こったときはいつでも何かを返さなければならないので。
前もって感謝します。
はい、できます: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に登録して、他のコントロールと同じように聞くことができます。
タイマーを使用してゲームの現在の状態をポーリングし、新しい値で表示を更新することができます。