vb.net ユーザーコントロールのリストボックスをmoduleに書く時の書き方
ユーザーコントロール内にリストボックスを置いてpubulic module内に
usercontrole.listbox 風に書くとエラーが出ます。
この場合どう書けば良いでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
こんにちは。
Moduleは静的なユーティリティに留めておくべきでしょう。
シンプルに呼び出し元からインスタンスを渡すほうが良いです。
lang
1'UserControl1 2Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 3 Call P_MenuListView_Reflash(Me) 4End Sub 5 6'Module1 7Public Sub P_MenuListView_Reflash(uc As UserControl1) 8 uc.ListView1.Items.Clear() 9End Sub
投稿2015/04/18 16:12
総合スコア4791
0
ユーザコントロールの実体(インスタンス)がないのでエラーになるのだと思います。
lang
1Dim mycontrol As New usercontrole 2mycontrol.listbox 3
みたいな書き方ではどうでしょう。
フォームに配置したユーザコントロール内のリストボックスだとすると、フォームのインスタンスから順番にたどる必要があります。
投稿2015/04/17 07:05
総合スコア3041
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答有難うございます。
さっそくやってみました。 まず、フォームには設置してないユーザーコントロールです。
フォーム1からボタンが2つありまして、各ボタンをクリックすると
ユーザーコントロール1と2をそれぞれフォーム1に表示できることまではしました。
ユーザーコントロール1と2にそれぞれlistview1(すみませんリストビューに訂正します。)と2が
ありまして、一つのmoduleで以下のように書きました。
module1側
Public Sub P_MenuListView_Reflash()
Dim mycontrol As New UserControl1
mycontrol.ListView1.Items.Clear()
End Sub
usercontrol1側
call P_MenuListView_Reflash
実行してみましたが、listview1のitemがclearできませんでした。
申し訳ございませんが、CHECKお願いできますでしょうか?
2015/04/17 12:47
なるほど、そういう使い方をされているのであれば、フォーム1に動的に追加したユーザコントロールをmodule1からアクセスできる変数に退避しておいて後から呼び出せるようにしておけばいいと思います。
たとえばモジュール側で
Public control1 As UserControl1
と外部からアクセスできる変数を宣言しておいて、フォーム1にユーザコントロール1を表示させるときに、この変数にユーザコントロール1を保管しておきます。モジュール側から操作する際には
Public Sub P_MenuListView_Reflesh()
control1.ListView1.Items.Clear()
End SUb
とすればうまくいくと思います(実際にはcontrol1がNothingかどうかのチェックなども記述する必要はありますが、上記コードでは省略しています)。
2015/04/18 15:44
遅くなりました。すみません。お忙しい中有難うございます。
テストをしてみましたが、できませんでした。色々気を使ってくれて有難うございます。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/19 06:53