- かもがや
- 大ベテラン
- 会議室デビュー日: 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可視性にすればいいかも。
|
そうか!このテがありますね!早速試してみます。
|