Form なら Form2.Show() 一行で動くんですけど。
Window (WPF) では、ちゃんと、コンストラクタを呼び出し、
インスタンスを初期化しないと駄目みたいです。 [初心者の悪あがきぃレベル] です。.
Form の時は Form1 と Form2 とを作り、Form1 の Button1 から Form2 を呼び出すのは、
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clickで、済んでいました。
Form2.Show()
End Sub
同じ事を、Window(WPF) ですると、Window2.Show() に波線が現れ、
「 非共有メンバを参照するには、オブジェクト参照が必要です。 」 と怒られて、実行出来ません。
結局、この様に書く事で、実行出来る様になります。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim window2 As New Window2
window2.Show()
End Sub
この時、双方の画面には違いがあります。
Form では Form2 は1画面しか、表示されず、何回 Button1 を押しても、結果は変わりません。
Window では、Button1 を押した回数に応じて、window2 が表示されます。
そりゃぁ、その書き方だから ... は ご勘弁を。
Form の時と、同じ挙動にするには、
Class Window1
Dim window2 As Window2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
If window2 Is Nothing Then
ShowWindow2()
Else
If Not window2.IsVisible Then
ShowWindow2()
End If
End If
End Sub
Private Sub ShowWindow2()
window2 = New Window2
window2.Show()
End Sub
End Class
と書かなければ。
画面設計の勝手が違う以外にも、こんな処から、Form と Window は違うのですね。
次の投稿の最後にシリーズのリンクを纏めてあります。 VB WPF お勉強 01 印象
[2015/10/25] 誤字訂正 window が windows になってた.
0 件のコメント:
コメントを投稿