VB.NET2005です。
サイズ変更可能なダイアログ(BorderStyle=Sizable)を表示(ShowDialog)させています。
ダイアログ表示後にマウス等でサイズの変更をすることは可能なのですが、
フォームロード時にWidthやHeightに固定値をセットしても
初期表示時の画面サイズが変わりません。
表示元画面のサイズに合わせて、ダイアログのサイズも
変更したいのですが、何か方法はございますでしょうか。
教えて下さい。
何卒よろしくお願い申し上げます。
> (BorderStyle=Sizable)
FormBorderStyle ではなく?
> フォームロード時にWidthやHeightに固定値をセットしても
> 初期表示時の画面サイズが変わりません。
こういう事でしょうか。当方では変化しましたけれども。
'=== Form1 ===
Partial Public Class Form1
Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using F As New Form2()
F.ShowDialog(Me)
End Using
End Sub
End Class
'=== Form2 ===
Partial Public Class Form2
Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.Width = 600
Me.Height = 100
End Sub
End Class
なお、Load イベントで Width や Height をセットするのはおすすめしません。
何故なら、たとえば StartPosition が CenterScreen に設定されていた場合、
表示位置が既に確定した後ですので、そこからサイズを変更すると、
本来の表示位置とは異なってしまうからです。
初期サイズを設定するなら、Load イベントの発生前の方が良いかと。
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
Me.Width = 600
Me.Height = 100
MyBase.OnLoad(e) 'サイズ設定後に Load 処理を行う
End Sub
# あるいは、New のコンストラクタ(InitializeComponent の実行直後)でも可。
このたびはお返事ありがとうございました。
ロード時に実際はサイズ変更できておりました。
魔界の仮面弁士様にご指摘頂いた通り、
ロード時にサイズ指定を行っていたため、
呼び出し側のフォームサイズに合わせた
ダイアログの最適な表示サイズや位置を算出する処理で、
思い通りの算出結果が出ておりませんでした。
それがたまたまサイズが変更されていないように
見えておりました。
Load時ですとCenterScreenで位置が変わってしまった後で
算出していたからなんですね。
ご指摘通り、Load イベントの発生前に算出、表示することで
目的の動作が実現しました。
ちなみにBorderStyleではなくFormBorderStyleでした。
いつもご教授頂いて助かっています。
本当にありがとうございました。