■No32611に返信(ERIさんの記事) > Public Class Form1 > Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click > HYOUJI() > End Sub > Public Sub HYOUJI() > MsgBox("OK") > End Sub > End Class
この場合、Click イベント内から呼び出しは、「Me.HYOUJI()」を意味します。 すなわち、自フォーム時に記載された Public Sub HYOUJI() のことです。
> Public Class Form2 > Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click > HYOUJI() > End Sub > End Class
Form1 のそれを呼び出したいのであれば、たとえば If pbfm1 IsNot Nothing Then pbfm1.HYOUJI() End If などの記述が必要になるでしょう。
> Publicを使用している場合、他のFormからでも参照出来る、と説明にあったのですが、エラーの原因が分かりません。 たとえば、基底となる Form クラスには Show メソッドがあります。 Form クラスはいくつでも New でインスタンス化できますから、 どのフォームを表示させたいのか、明示して「何某.Show()」と呼びますよね。
後どうでもいい事かもしれませんが ■No32611のERIさんの記事 に書かれたソースはもともとコンパイルが通らないと思います。 以下にコンパイルが通らない個所を記述します。 >Public Class Form1 > Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click ここ↓ > pbfm2 = New Form1
> pbfm2.Show() > Me.Hide() > End Sub
>Public Class Form2 > Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click ここ↓ > HYOUJI() > End Sub
分類:[.NET]
お世話になります。
変数ではなく、Subのスコープについて、お伺いさせてください。
Form1、Form2の2つのFormがあります。
Form1にはbtnOpen、btnOKの2つのボタンがあります。
Form2にはbtnClose、btnOKの2つのボタンがあります。
EXEを起動すると、Form1が開きます。
Form1のbtnOpenを押すと、Form2が開きます。
Form2のbtnCloseを押すと、Form1に戻ります。
両FormのbtnOKを押すと、共に「OK」とメッセージが出ます。
これを以下のように書いています。
Form用の変数宣言は、別のモジュールmodHensu.vbで宣言しています。
Module modHensu
'フォーム
Public pbfm1 As Form1
Public pbfm2 As Form2
End Module
Public Class Form1
Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
pbfm2 = New Form1
pbfm2.Show()
Me.Hide()
End Sub
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
HYOUJI()
End Sub
Public Sub HYOUJI()
MsgBox("OK")
End Sub
End Class
Public Class Form2
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
pbfm1 = New Form1
pbfm1.Show()
Me.Close()
End Sub
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
HYOUJI()
End Sub
End Class
このコードでビルドしますと、Form2のbtnOK.ClickにおけるHYOUJI()の呼び出しが、エラーになります。
Public Sub HYOUJI()を、modHensu.vbの中に置くと、エラーにはなりません。
Publicを使用している場合、他のFormからでも参照出来る、と説明にあったのですが、エラーの原因が分かりません。
シンプルな質問かもしれませんが、どうぞよろしくお願いします。