VB2008でデリゲートが効かない?

解決


ひぃ  2008-06-17 01:38:20  No: 144818

こんにちわ。ある程度探してみましたが引っかからなかったので質問させて頂きます。

現在、VB2008にて開発を行っておりますが、
子フォームの反映ボタンを押下したら、
親フォームで検索処理を行う。
というような処理を作成しております。
現在のプロジェクトに対し、デリゲート処理を追加して試してみたのですが、
ボタンを押下しても、AddressOfで指定している箇所に飛びません。
プロジェクトがおかしくなった!?と思い、
新規プロジェクトを作成し、フォームを2つ用意してみましたがやはり飛びません。
VB2008ではデリゲート処理出来ないのでしょうか?
ちなみに、VB2005で作成されたデリゲートのサンプルPGを、
VB2008で開くと自動変換が掛かりますが、
そのプログラムですと問題なく処理が出来ました。
VB02008では何らかの宣言等が必要なのでしょうか?

新規で作成したソースを掲載しておきます。
(フォーム2つ、Form1にテキストボックス*1,ボタン*1のみ配置)
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim frm As New Form2
        AddHandler frm.Closed, AddressOf test

        Form2.Show()
        Me.TextBox1.Text = "開いた"

    End Sub
    Private Sub test(ByVal sender As Object, ByVal e As System.EventArgs)

        Me.TextBox1.Text = "閉じちゃ"

    End Sub
End Class

以上、宜しくお願い致します。


魔界の仮面弁士  2008-06-17 02:34:58  No: 144819

> Dim frm As New Form2
ここでは、変数「frm」という Form2 インスタンスを利用しているのに

> Form2.Show()
ここでは、先の frm とは別の、My.Forms.Form2 インスタンスを表示させています。

frm も Form2 も、いずれも Form2 というデータ型ですが、それぞれが
別のオブジェクト インスタンスを指している事に注意してください。


ひぃ  2008-06-17 03:25:49  No: 144820

魔界の仮面弁士様

>frm も Form2 も、いずれも Form2 というデータ型ですが、
>それぞれが別のオブジェクト インスタンスを指している事に注意してください。

なるほど、別々のモノだと言う事だったんですか、、、
VB.NETではまだまだ初心者なので単純ミスだったようです。
またお聞きする事もあるかと思いますが、宜しくお願い致します。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加