• ベストアンサー

標準モジュールからフォームをコントロールしたい

こんにちは。 標準モジュールからフォームのリストボックスに文字を追加したいんですが、うまくいきません。 まず、button1をクリックすると、共通モジュールのサブルーチンを呼び出します。そして引数"0"を渡すと、Form1のListBox1に"hello"を追加したいのです。 実行させると、エラーはでないのですが、追加されるはずの"hello"がListBox1に追加されません。 たぶん     frm1.ListBox1.Items.Add("hello") あるいは    Dim frm1 As New Form1() あたりの宣言の仕方がまずいのだと思うんですが... どなたか、ご教授よろしくお願いします。 ■共通モジュール Module Module1 Dim frm1 As New Form1() Sub PC(ByVal PCrecieve As String) If PCrecieve = "0" Then frm1.ListBox1.Items.Add("hello") End If End Sub End Module ■フォーム Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call PC("0") End Sub End Class

質問者が選んだベストアンサー

  • ベストアンサー
  • thulala
  • ベストアンサー率63% (7/11)
回答No.3

あまり気にしないでほしい出んけども、 Dim frm1 As New Form1() としているだけで、 実体の frm1 = Form1.ActiveForm を関連付けていないからではないでしょうか? たびたびすみませんでした。 自身なしです。 Sub PC(ByVal PCrecieve As String) frm1 = Form1.ActiveForm If PCrecieve = "0" Then frm1.ListBox1.Items.Add("hello") End If End Sub

hibachi
質問者

お礼

何度もありがとうございます。 確かにfrm1 = Form1.ActiveFormを加えたらリストボックスに"hello"が表示されるようになりました。しかし実体の関連付けというのは、必ずしなければならないんでしょうか?オブジェクト指向だから? "ActiveForm"ってVB.netの本4冊持っているんですが、その内一冊にしかでてないんですよ。ここで質問しなかったら永久にわからなかったかもしれません。 ありがとうございました。

その他の回答 (2)

  • thulala
  • ベストアンサー率63% (7/11)
回答No.2

できましたのでサンプルですが、ご報告です。 Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim dd As Module1 dd = New Module1 dd.test() End Sub End Class Class Module1 Sub test() Dim frm As New Form1 frm = Form.ActiveForm frm.Button1.Text = "hello" MsgBox("hhh") End Sub End Class あまり、よく理解できていないですが、、、、

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

Formにコマンドボタン1つとリストボックスを1つ貼りつけました。 Project-Form1(コード) Private Sub Command1_Click() pc ("0") End Sub Project-Module1(コード) Sub pc(ByVal PCarg As String) If PCarg = "0" Then Form1.List1.AddItem "Hello" End If End Sub でフォームを実行-開始し、コマンドボタンをクリックするごとに、リストボックスにHelloが現れましたが。

hibachi
質問者

補足

はい。このソースでできました。 書くのを忘れていましたが、VB.netで実行したいのです。回答された、このソースだと確かにVB6.0では動くのですが、VB.netだと「オブジェクト参照」に関してエラーになると思います。どなたかその辺りに詳しい人はいらっしゃらないでしょうか?

関連するQ&A