- PR -

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

投稿者投稿内容
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-02 10:14
ハンドルネームのごとく脳味噌が硬直化してきました。

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



Formの方でHogeHoge()を呼び出す時に

コード:
    Call HogeHoge(FormHoge) 



としてしまい、「引数は型ではなく式です」と怒られてしまいました。
この場合・・式って・・どういう事になるんでしょう?
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-09-02 10:55
引用:

脳味噌筋肉さんの書き込み (2004-09-02 10:14) より:
ハンドルネームのごとく脳味噌が硬直化してきました。

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




Formの方でHogeHoge()を呼び出す時に

コード:
    Call HogeHoge(FormHoge) 



としてしまい、「引数は型ではなく式です」と怒られてしまいました。
この場合・・式って・・どういう事になるんでしょう?



引数として渡すのは型ではなく、インスタンスですよね。
しかも、この場合は自分自身を渡したいのですよね。

上記二つを念頭に置けば解決すると思います。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-02 11:12
NAL-6295さん、レスありがとうございます。

引用:

引数として渡すのは型ではなく、インスタンスですよね。
しかも、この場合は自分自身を渡したいのですよね。

上記二つを念頭に置けば解決すると思います。



コード:
Call HogeHoge(Me) 



でした。
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-03 09:59
お世話になります。

スレタイと離れるのですが
Form1
Form2
Form3
と3つあって、Form1がForm2を、Form2がForm3をShowDialogで起動させます。

Form3に「Form1に戻る」なんてボタンを置きましてForm3とForm2を閉じてForm1
を開きたいのです。

コード的には

コード:
    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click

        Me.Close()     ->  自分(Form3)を閉じる

        XXX.Close()    ->  ※Form2を閉じたい

        Form1.ShowDialog() ->  ※Form1を開きたい

    End Sub



こういうコードを書いているのですが、非共有メンバの参照に対して、オブジェクト参照
が指定されていません。と怒られます。

エラーのリファレンスには「最初にインスタンスをオブジェクト変数として宣言してから、変数名で
インスタンスを参照します。」とあるのですが、意味が・・分かりません(苦)

アドバイス頂けないでしょうか?
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2004-09-03 10:23
本題へのレスじゃないんですが・・・

引用:

Jubeiさんの書き込み (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ってプロパティは短縮できるんですか?



旧VBではデフォルトプロパティ(TextBoxの場合、Textプロパティ)は省略できました。
VB.netではできませんが。

引用:

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



C#では貼り付けたコントロールはprivateになりますが、
VB.netではデフォルトでFriend(C#のinternal)になります。
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2004-09-03 10:46
Hasumiです。

引用:

脳味噌筋肉さんの書き込み(2004-09-03 09:59)
Form3に「Form1に戻る」なんてボタンを置きましてForm3とForm2を閉じてForm1
を開きたいのです。


Form3にForm1に戻るかを示すプロパティを作成し、「Form1に戻る」ボタンを
押したときにForm1に戻るかを示すプロパティをtrueにし、Form3を閉じる。

Form2でForm3のプロパティがtrueの場合はForm2を閉じる。

[ メッセージ編集済み 編集者: Hasumi 編集日時 2004-09-03 10:48 ]
soluna
ベテラン
会議室デビュー日: 2004/06/15
投稿数: 59
投稿日時: 2004-09-03 13:00
引用:

脳味噌筋肉さんの書き込み (2004-09-03 09:59) より:
こういうコードを書いているのですが、非共有メンバの参照に対して、オブジェクト参照
が指定されていません。と怒られます。

エラーのリファレンスには「最初にインスタンスをオブジェクト変数として宣言してから、変数名で
インスタンスを参照します。」とあるのですが、意味が・・分かりません(苦)


根っこは『C#でForm以外のモジュールからのFormモジュールの呼び出し』と同じところで
詰まっている感じですね。
『C#でForm以外のモジュールからのFormモジュールの呼び出し』で示されている、
Webページ読みました?
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-03 14:24
Hasumiさん、solunaさん、レスありがとうございます。


引用:

solunaさんの書き込み (2004-09-03 13:00) より:
引用:

脳味噌筋肉さんの書き込み (2004-09-03 09:59) より:
こういうコードを書いているのですが、非共有メンバの参照に対して、オブジェクト参照
が指定されていません。と怒られます。

エラーのリファレンスには「最初にインスタンスをオブジェクト変数として宣言してから、変数名で
インスタンスを参照します。」とあるのですが、意味が・・分かりません(苦)


根っこは『C#でForm以外のモジュールからのFormモジュールの呼び出し』と同じところで
詰まっている感じですね。
『C#でForm以外のモジュールからのFormモジュールの呼び出し』で示されている、
Webページ読みました?



C#で詰まったところはVB.NETでどうなるか?
VB.NETで詰まったところはC#でどうなるか?
どうしても知りたくてこうなってしまいます。

Webページ、これから読みにいってきます。

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