2

私はシンプルSystem.Windows.Forms.Formです。ビジネス要件に基づいて、バックグラウンド処理の結果として特定の機能が利用可能になったら、フォームのサイズを大きくし、以前は非表示だった領域を追加のコントロール (ボタンなど) で開きます。フォームのサイズの変更は、バックグラウンド スレッドによって行われ、BeginInvoke.

これはすべて正常に機能します。ただし、ユーザーが画面上でフォームをドラッグしているときに、たまたまフォームのサイズを変更するメソッドが呼び出された場合、サイズの変更は有効になりませ(技術的にはフォームのサイズは変更されますが、瞬間的に元のサイズに戻ります)。 )。

プロパティを設定してフォームのサイズを変更していますが、設定や呼び出しForm.Sizeなどの他の方法を試しました。/と強制も試しました。Form.ClientSizeForm.SetBounds()Form.SuspendLayout()Form.ResumeLayout()Form.PerformLayout()

これまでに試したことは何もありません。フォームを移動すると、フォームのサイズが変更されません。

4

1 に答える 1

2

Form_LocationChangedイベントにコードを入れて、以前に非表示にされた領域が表示されているかどうか(または、bool変数を介して表示されている必要があるかどうか)を検出し、それに応じてフォームのサイズを変更します。それ以外の場合は、移動が終了した後にResizeEndイベントが発生します。それを試してください。

于 2012-04-15T02:49:54.753 に答える