0

私の問題は次のとおりです。アプリ内に状態マシンがあり、ユーザーが画面に沿ってフォームを移動している限り、現在の状態の ProcessInput 関数を一時停止できる必要があります。

それを行う状態に「一時停止」というプロパティがあり、フォームのOnMoveイベントをオーバーライドして、イベントが発生したときにプロパティがtrueに設定されるようにします。

ユーザーがフォームを移動しなくなったときに、状態の ProcessInput 関数を再開するにはどうすればよいですか? (具体的には、「state.Paused = false」を入れるイベントを探しています)

あなたの助けのために前もってThx!

4

2 に答える 2

1

WM_MOVEメッセージが必要です。これは、移動が完了すると送信されます。WinFormsにハンドラー(イベント)があるかどうかは覚えていませんが、最悪の場合、ウィンドウのWndProcをオーバーライドして、「古い学校」のCスタイルでメッセージを手動で処理できます。

于 2010-07-16T08:21:09.227 に答える
1

リッスンできる特定のイベントがあるかどうかはわかりませんが、何らかのタイマー ベースの回避策を使用してみてはどうでしょうか。

タイマーを作成し、移動イベントが発生するたびにタイマーをリセットして有効にします。タイマーが実際に起動したら (設定された期間中リセットされていない場合)、state.Paused = false を設定します。

少し初歩的かもしれませんが、うまくいくはずです...

于 2010-07-16T08:18:52.063 に答える