- - PR -
フォームデザインのオブジェクト名を変数名で指定
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-23 09:03
VB.NETのコントロールでの質問なのですが、
例えばテキストボックスを5個配置しているとして、 コードからテキストボックスに値を入力する際、 変数名を指定するようなことは可能でしょうか? Dim ObjectName as String = "TextBox1" ObjectName.Text="テスト1" ObjectName="TextBox2" ObjectName.Text="テスト2" 上記のようなことが行いたいのですが、可能でしょうか? | ||||||||
|
投稿日時: 2006-03-23 09:28
下記のような処理ではだめなのでしょうか?
どうしてもコントロール名から設定したいのであれば、フォームオブジェクト などからFindControlで該当の名称のコントロールを検索し、設定することになる と思います。
| ||||||||
|
投稿日時: 2006-03-23 10:14
これASP.NETの話ですか?
それなら悠さんの方法でできますね。 WindowsフォームのプログラムならControl.Nameプロパティでいけます。 あと、WebでもWindowsフォームでも、リフレクションを使うこともできます。 いずれにしても、もう一回作りを考え直してみた方がいいですね。 コンパイル時にエラーを見つけられないですからね。 (IDの文字列を打ち間違えるとか、IDで処理をしていると気付かずに修正する時にIDを変えてしまうとか) [ メッセージ編集済み 編集者: 一郎 編集日時 2006-03-23 10:15 ] | ||||||||
|
投稿日時: 2006-03-23 10:32
Windows Form だとして以下の方法があります。
フォーム内のコントロールを名前で探して取得する リンク先にも書いていますが、コンパイル解決できないのでお勧めできません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-07-20 11:58
期間が経ってますが^^;
Control.Nameで出来るとはどのような記述でしょうか? Dim ctrl As New Control Dim s() as string = {"0", "1", "2", "3", "4"} Dim i as integer = 0 Do while i < 5 ctrl.Name = "テキスト" + cstr(i + 1) ctrl.Text = s(i) Loop このようにテキスト1〜5までに値を入れようとしたのですが 上手くテキスト1.Textには入りませんでした。 (ctrl.textには入っていましたが) | ||||||||
|
投稿日時: 2006-07-20 12:09
じゃんぬさんがお示しになったリンク先をご覧ください。 Name プロパティが使われてるでしょう? // くーさんがお考えのとは異なったところで | ||||||||
|
投稿日時: 2006-07-20 12:21
念のためですが、
Name プロパティでの実装は先にも書いたとおりお勧めできません。 デザイン時はともかく、実行時は一意である保証がありません。 リフレクションを使用して取得した方が、まだマシだと思います。 まあ、「コンパイル解決できない」 というのが最も大きな理由です... .NET Framework 2.0 からはできますが、こちらも当然お勧めできません。 # (何故、こんなに要望があるんでしょうね...) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-07-20 14:03
見本通りFindControl関数を置き、
Dim s() As String = {"0", "1", "2", "3", "4"} Dim i As Integer = 0 Do while i < 5 Dim ctrl As Control = FindControl(Me, "テキスト" + cstr(i + 1)) ctrl.Text = s(i) i = i + 1 Loop とやったら上手く行きました! 今回急ぎの用でしたのでこの方法で。 リフレクションはあとで勉強しておきます。 Hongliangさん、じゃんぬさん有難うございました。 [ メッセージ編集済み 編集者: くー 編集日時 2006-07-20 14:05 ] |