2013年5月14日火曜日

フォームを見せずにLoadイベントを起こすには

VB6からVB.NETへの移行を行なっていたのですが、
VB6でできたフォームを表示しないでのLoadをどうしようかと考えることになりました。

Loadイベントの中身をコンストラクタに移動すれば良い気もしますが、
どうにも不安が拭えません。

ということで無理やりこんなメソッドを作りました。

Public Sub LoadHidden(ByRef target As Form)
    Dim tempLocation As Point = target.Location
    Dim tempStartPosition As FormStartPosition = target.StartPosition
    Dim tempShowInTaskbar As Boolean = target.ShowInTaskbar
    target.StartPosition = FormStartPosition.Manual
    target.ShowInTaskbar = False
    target.Location = New Point(-target.Width, -target.Height)
    target.Show()
    target.Hide()
    target.StartPosition = tempStartPosition
    target.ShowInTaskbar = tempShowInTaskbar
    target.Location = tempLocation
End Sub

動作としては、
画面の外で表示してすぐ消すことでLoadイベントを発生させています。

あらかじめ言っておきますが、
こんなメソッドには頼らない方が望ましいです。

m9(^Д^)プギャー

と思って読むくらいが丁度良いですね。

0 件のコメント:

コメントを投稿