変数にコントロール名 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2009/11/17 05:38:51
Object を New しておく必要はありません。単純に
パル36さんが失敗したのは、恐らく
そのように記述してしまうと、NullRefereceException の警告が発生してしまい、
『オブジェクト変数または With ブロック変数が設定されていません。』という
エラーになってしまいます。
これはフォームが起動直後においては、コントロール変数「コン1」の中身はまだ生成されておらず、
空っぽ(Nothing)の状態にあるからです。
今回のように、Load イベントなどで設定するようにすれば、コントロールの生成が完了しているため、
このような問題はおきません。
Dim UsrCon As Object
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
UsrCon = コン1
End Sub
で OK です。パル36さんが失敗したのは、恐らく
Dim UsrCon As Object = コン1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
End Sub
のように、Sub~End Sub 等の外側で初期値を指定していたからでしょう。そのように記述してしまうと、NullRefereceException の警告が発生してしまい、
『オブジェクト変数または With ブロック変数が設定されていません。』という
エラーになってしまいます。
これはフォームが起動直後においては、コントロール変数「コン1」の中身はまだ生成されておらず、
空っぽ(Nothing)の状態にあるからです。
今回のように、Load イベントなどで設定するようにすれば、コントロールの生成が完了しているため、
このような問題はおきません。
投稿者 パル36  (中学生)
投稿日時
2009/11/17 04:25:05
回答してくださった方々、ありがとうございます。
ググったりしたりして調べたところ、オブジェクト変数というものを使えばいいということがわかりました。
以下のは、成功したコードです。
本当にありがとうございました。
ググったりしたりして調べたところ、オブジェクト変数というものを使えばいいということがわかりました。
以下のは、成功したコードです。
Dim UsrCon As New Object 'オブジェクト変数の宣言
'ロード
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
UsrCon = コン1 'ロードしたときにオブジェクト変数に「コン1」を代入
End Sub
’ボタンをクリック
UsrCon.Visible = False '現在表示しているコントロール(コン1)を非表示にする
本当にありがとうございました。
投稿者 るしぇ  (社会人)
投稿日時
2009/11/16 06:44:33
[新しい項目の追加]で UserControl を追加すると、
System.Windows.Forms.UserControl を継承するけど
ContainerControl クラスの拡張で、
更に遡れば Control クラスに行き着くので
Visible プロパティは持ってるね。
System.Windows.Forms.UserControl を継承するけど
ContainerControl クラスの拡張で、
更に遡れば Control クラスに行き着くので
Visible プロパティは持ってるね。
投稿者 まだまだ  (中学生)
投稿日時
2009/11/16 06:15:50
こういうことですか?
これならやりたいことができると思います。
違ったらごめんなさい。
Dim UsrCon As Object = New PictureBox1
Me.Controls.Add(UserCon)
'ボタンをクリック
UsrCon.Visible = True
これならやりたいことができると思います。
違ったらごめんなさい。
投稿者 パル36  (中学生)
投稿日時
2009/11/16 05:30:31
普通にできたって・・・
私がしたときはできなかったんですが;
>それとVBのバージョンも書いたほうがいいと思います。
書き忘れていました。
VB2008の無料のほうです。
もう1度やってみます。
私がしたときはできなかったんですが;
>それとVBのバージョンも書いたほうがいいと思います。
書き忘れていました。
VB2008の無料のほうです。
もう1度やってみます。
投稿者 もすもす  (小学生)
投稿日時
2009/11/16 05:18:11
普通にできましたけど…
それとVBのバージョンも書いたほうがいいと思います。
それとVBのバージョンも書いたほうがいいと思います。
投稿者 パル36  (中学生)
投稿日時
2009/11/16 03:57:19
はじめまして、パル36といいます。
私は、まだ始めたばっかりの初心者ですが宜しくお願いします。
質問させていただきます。
ある変数にコントロール名(ユーザーコントロール)を入れて、表示・非表示などのことはできるのでしょうか?
下のような感じにやってみました。
しかし、例外が発生したりしてうまくいきませんでした。
このようなことは、可能でしょうか?
よろしくお願いします。
私は、まだ始めたばっかりの初心者ですが宜しくお願いします。
質問させていただきます。
ある変数にコントロール名(ユーザーコントロール)を入れて、表示・非表示などのことはできるのでしょうか?
下のような感じにやってみました。
Dim UsrCon As Object = コントロール1
・
・
・
'ボタンをクリック
UsrCon.Visible = True
しかし、例外が発生したりしてうまくいきませんでした。
このようなことは、可能でしょうか?
よろしくお願いします。
魔界の仮面弁士sの言うとおりに初めは、プロシャージャ?の外に記述していました。
そして、NullRefereceException の警告も出ていました。
>Object を New しておく必要はありません。
どこかのHPで書いてあったので真似したのですが、いらなかったのですか・・・;
魔界の仮面弁士s、いろいろ指摘してくださってありがとうございました。