tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルフォームを表示する前にサイズ・位置変更を行いたい
記事No6173
投稿日: 2007/08/27(Mon) 16:29
投稿者キジ
VB2005(SP1)、.NETFrameworks2.0です。
下記1.のようにフォームを表示する際、
あらかじめ表示するサイズ・位置を各プロパティに設定しておき、
その後、Showメソッドを実行したのですが、いざフォームが表示されると
デフォルトの位置、サイズになっているようで、設定が無視されているようです。
1.
Dim frm1 As From1 = New From1
frm1.DesktopBounds = New Rectangle(0, 0, 1000, 1000)
frm1.Show()


ちなみに下記2.のように、Showした後で設定すれば、ちゃんと表示されます。
2.
Dim frm1 As From1 = New From1
frm1.Show()
frm1.DesktopBounds = New Rectangle(0, 0, 1000, 1000)
しかし、これだとフォーム表示してからリサイズすることになるので、
一瞬ではありますが、リサイズする動作が見えてしまい、
結果的に画面がチラつくように見え具合が悪いです。


原因は何でしょうか?
Show()して、frm1をメモリにロードして実体(インスタンス)を作ってからでないと
設定は無効ということでしょうか?

確かVB6.0では1.のように表示前にサイズ指定できていたと思うのですが、
VB2005で表示前にリサイズを済ませておくにはどうすればよいのでしょうか?

[ツリー表示へ]
タイトルRe: フォームを表示する前にサイズ・位置変更を行いたい
記事No6174
投稿日: 2007/08/27(Mon) 16:40
投稿者よねKEN
> Dim frm1 As From1 = New From1
> frm1.DesktopBounds = New Rectangle(0, 0, 1000, 1000)
> frm1.Show()

私の環境(.NET Framework2.0)で試してみました。
このコードの場合、サイズは反映されるようですが、位置は反映されないようですね。
LoadイベントでDesktopBoundsを設定するようにすると私の方ではうまく行きました。
参考までに。

[ツリー表示へ]
タイトルRe^2: フォームを表示する前にサイズ・位置変更を行いたい
記事No6176
投稿日: 2007/08/27(Mon) 17:37
投稿者Hongliang
StartPosition かな
// 知らないと分からない代表的プロパティかもしれない

[ツリー表示へ]
タイトルRe^3: フォームを表示する前にサイズ・位置変更を行いたい
記事No6177
投稿日: 2007/08/27(Mon) 20:09
投稿者キジ
> StartPosition かな
> // 知らないと分からない代表的プロパティかもしれない


よねKENさん、Hongliangさん、早速のご回答ありがとうございます。

説明不足で申し訳ありませんが、表示させようとしているフォームはMDI子フォームなんです。

ご教示に従い下記のようにしてみました。

With frm
    .MdiParent = frmMDI
    .StartPosition() = FormStartPosition.Manual
    .DesktopBounds = New Rectangle(0, 0, MDI親のクライアント領域の幅, MDI親のクライアント領域の高さ)
    .Show()
End With

これでShow前にサイズ・位置を指定して表示させることができるようになりました。が、
FormBorderStyleをNoneにしているのですが、これの動作が
まずタイトル有のフォームを表示させて、それからタイトルを消す処理を行っているようで
やはり表示時に、一瞬ではありますがそれを行っている様子が画面で見えます。

この処理はVBで行っているのでしょうから、MDI子フォームの宿命と諦めるしかないんでしょうか?

[ツリー表示へ]