1

ウィンドウ(System.Windows.Forms.Form)の境界(別名サイズ)をプログラムで設定し、同時に目に見えるちらつきなしでコントロールを追加/削除する必要がある.net 4.0 winformsプロジェクトがあります. フォームはユーザーがサイズ変更できません。サイズが変更される唯一の場所は、 this.Bounds = foo / this.DesktopBounds = foo / ... 呼び出しです。

p/invoke を使用して WM_SETREDRAW を送信してちらつきを防止すること、および SuspendRedraw/SuspendLayout とその仲間については既に読みました。私はまだちらつきが発生していることを確認しており、問題を次のように突き止めました。

Windows は、再描画が無効になっている場合でも、境界/サイズの設定時にフォームを再描画します。

これはフォーム自体が原因ではなく、ウィンドウマネージャーが何らかの原因で発生していると思いますか?

それで、どんな状況でも再描画を絶対に防ぎ、後で手動で再描画と更新を再度有効にする方法はありますか? 「ウィンドウをフリーズしてスナップショットを表示する」、内容を変更する、「スナップショットを更新されたウィンドウ (位置とサイズを含む) に一度に置き換える」のようなものですか?

ありがとう、乾杯、ティム

4

1 に答える 1

0

フォームの ResizeRedraw プロパティを使用します。false に設定します。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.resizeredraw.aspx

また、後でウィンドウを手動で再描画する必要があります。

于 2012-11-06T16:34:17.897 に答える