2

だから私は別のクラスでやや長い進歩を遂げており、GUIにいくつかの進歩情報を提供したいと考えています。私はバックグラウンドワーカーを認識しており、必要に応じてこれを使用する可能性がありますが、この操作は非常に単純であるため、バックグラウンドワーカーは必要以上に感じます。代わりに、イベント ハンドラーを使用して更新を処理していますが、操作に一貫性がありません。

ワーカー クラスで特定のポイントに到達すると、進行状況を知らせるイベントが発生します。GUI クラスには、そのイベントをリッスンするイベント ハンドラがあります。それを見つけると、それに関する文字列を作成し、その文字列をラベルのテキストとして配置します。

次に、そのイベント ハンドラで labelname.Update() を呼び出しますが、何も起こりません。これが本当に紛らわしい部分です。代わりにテキストボックスを配置し、そのテキストを設定してから、textboxname.Update() を呼び出したところ、機能しました。あるコントロールでは .Update() が機能しないのに、別のコントロールでは機能しないのはなぜですか。ラベルで機能させるためのトリックはありますか?

4

2 に答える 2

2

ローケンのコメントを回答にしていますが、彼の発言回答です。バックグラウンド ワーカー、ピリオドでバックグラウンド操作を実装する必要があります。

その理由と方法については、この優れた記事を参照してください。

于 2012-06-13T21:53:30.177 に答える
1

(1)電話labelname.Invalidate();する前に電話してみてくださいlabelname.Update();

Invalidateメソッドを呼び出しても、同期ペイントは強制されません。同期ペイントを強制するには、Invalidateメソッドを呼び出した後にUpdateメソッドを呼び出します。(MSDN

(2)別のオプションはlabelname.Refresh();

コントロールにそのクライアント領域を無効にし、すぐに それ自体とすべての子コントロールを再描画するように強制します。(MSDN

于 2012-06-13T21:50:52.983 に答える