- PR -

VB.NETでModule.vbからForm上のコントロールにアクセスしたい

投稿者投稿内容
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-01 11:04
お世話になってます。

VB.NETでModule.vbからForm上のコントロールにアクセスしたく、前のVBの感覚で
こんなコードを書いています。

コード:
Form

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        formHoge.TextBox = "HogeHogeHoo.."	
        Call HogeHoge()
    End Sub


Module

    Sub Main()

        Dim formHoge As New FormHoge
        formHoge.ShowDialog()

    End Sub

    Public Sub HogeHoge()

        Dim formHoge As New FormHoge
	formHoge.TextBox = ""	

    End Sub



狙いは
 1 モジュールにメインを置いてForm表示
 2 Form上のボタンクリックイベントでモジュール内のサブルーチン呼び出し
 3 モジュール内のサブルーチンでForm上のテキストボックスをクリア
なのですが、クリアしてくれません(苦)

コードの何が悪いのかご指摘お願いします。
 
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-09-01 11:17
コード:
Form

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        formHoge.TextBox = "HogeHogeHoo.."	
        Call HogeHoge()
    End Sub


Module

    Sub Main()

        Dim formHoge As New FormHoge
        formHoge.ShowDialog()

    End Sub

    Public Sub HogeHoge()

        Dim formHoge As New FormHoge
	formHoge.TextBox = ""

    End Sub




太字の部分がまずいです。
ここで新しいインスタンスを生成しているので、呼び出し元のフォームのテキストボックスがクリアされる事はありません。

呼び出し元のフォームのインスタンスを渡してあげるとよいです。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-09-01 11:34
引用:

脳味噌筋肉さんの書き込み (2004-09-01 11:04) より:
VB.NETでModule.vbからForm上のコントロールにアクセスしたく、前のVBの感覚で

コード:
        Dim formHoge As New FormHoge
	formHoge.TextBox = ""	




微妙に気になったりするんですが、これって前のVBでも駄目だったりしません?
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-01 11:43
NAL-6295さん、ありがとうございます。

引用:


呼び出し元のフォームのインスタンスを渡してあげるとよいです。




こういう書き方ってアリなんでしょうか?

コード:

Module

    Public formHoge As New FormHoge

    Sub Main()

        '''->Dim formHoge As New FormHoge
        formHoge.ShowDialog()

    End Sub

    Public Sub HogeHoge()

        '''->Dim formHoge As New FormHoge
	formHoge.TextBox = ""

    End Sub




一応、望みは達したのですが。。。
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-01 13:08
引用:

なちゃさんの書き込み (2004-09-01 11:34) より:
引用:

脳味噌筋肉さんの書き込み (2004-09-01 11:04) より:
VB.NETでModule.vbからForm上のコントロールにアクセスしたく、前のVBの感覚で

コード:
        Dim formHoge As New FormHoge
	formHoge.TextBox = ""	




微妙に気になったりするんですが、これって前のVBでも駄目だったりしません?



試してないのですが、ご指摘の通りかもしれません。。。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-09-01 14:21
諸農です。

VB.NETはよくわかりませんが、

引用:

コード:
Form

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        formHoge.TextBox = "HogeHogeHoo.."	
        Call HogeHoge()
    End Sub





formHogeのTextBoxのTextプロパティを"HogeHogeHoo.."にしたいのですよね?
VBってプロパティは短縮できるんですか?

あと、フォーム上に貼り付けたコントロールはprivateのはずなので、
クラス外部からはアクセスできなかったんじゃないでしょうか?

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-09-01 14:31
諸農です。

コード:
    Public Sub HogeHoge(AForm as FormHoge)
        AForm.TextBox.Text = ""	
    End Sub



の様にして、FormHogeクラスのTextBoxをpublic可視性にすればいいかも。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-02 09:59
Jubeiさん、レスありがとうございます。

引用:

Jubeiさんの書き込み (2004-09-01 14:31) より:
諸農です。

コード:
    Public Sub HogeHoge(AForm as FormHoge)
        AForm.TextBox.Text = ""	
    End Sub



の様にして、FormHogeクラスのTextBoxをpublic可視性にすればいいかも。





そうか!このテがありますね!早速試してみます。

スキルアップ/キャリアアップ(JOB@IT)