C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 文字を連結して連結した文字列でコントロールにアクセスするには


(過去ログ 122 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■72967 / inTopicNo.1)  文字を連結して連結した文字列でコントロールにアクセスするには
  
□投稿者/ けん (1回)-(2014/08/05(Tue) 20:57:36)

分類:[C#] 

C#2010を使用しているのですが
文字を連結してコントロール名にしてアクセスしたいのですが

例えば textBox1 )

(textBox + 1).Text; でtextBox1にアクセスしたいのです。

これを実現する方法はないでしょうか?

じっさいにやってみるとエラーが出てできませんでした。

どうぞよろしくお願いします。
引用返信 編集キー/
■72968 / inTopicNo.2)  Re[1]: 文字を連結して連結した文字列でコントロールにアクセスするには
□投稿者/ shu (605回)-(2014/08/05(Tue) 23:15:11)
No72967 (けん さん) に返信
Controls(コントロール名)

Controls.Find(コントロール名, true)[0]

でどうでしょう?
Formに直接配置されているなら前者、Panelなどの上に配置されており
どのPanelか特定できない場合は後者を使うとよいかと思います。
引用返信 編集キー/
■72969 / inTopicNo.3)  Re[2]: 文字を連結して連結した文字列でコントロールにアクセスするには
□投稿者/ ぽぴ王子 (5回)-(2014/08/06(Wed) 09:42:30)
ぽぴ王子 さんの Web サイト
No72967 (けん さん) に返信

shuさんのフォローです。

> Controls(コントロール名)
> か
> Controls.Find(コントロール名, true)[0]

この場合のコントロール名は "textBox" + "1" ("textBox1"でもいいけど)という「文字列」を
あらわします。


で。

別のやり方というか、たぶん "textBox1" "textBox2" "textBox3" ... とコントロールが配置されて
いて、"textBox" + ? という形で連続してアクセスしたいのかな?と勝手に考えました。
その場合は

Control[] ctrls = new Control[] { textBox1, textBox2, textBox3 };
foreach (var ctrl in ctrls)
{
    // 何かの処理
}

のような感じで、コントロール自身を配列として持っておいて、その配列に対して操作する方が
よいのではないかと思いました。
あ、勝手に「質問には出ていないけど、最終的にこんな風にしたかったんじゃないかな?」と思った
だけなので、違ってるかもしれませんが。

引用返信 編集キー/
■72976 / inTopicNo.4)  Re[2]: 文字を連結して連結した文字列でコントロールにアクセスするには
□投稿者/ けん (2回)-(2014/08/06(Wed) 17:16:14)
shu様、ご返信ありがとうございます!

Controls(コントロール名) でアクセスすることができました。

ありがとうございました。





No72968 (shu さん) に返信
> ■No72967 (けん さん) に返信
> Controls(コントロール名)
> か
> Controls.Find(コントロール名, true)[0]
>
> でどうでしょう?
> Formに直接配置されているなら前者、Panelなどの上に配置されており
> どのPanelか特定できない場合は後者を使うとよいかと思います。
解決済み
引用返信 編集キー/
■72977 / inTopicNo.5)  Re[3]: 文字を連結して連結した文字列でコントロールにアクセスするには
□投稿者/ けん (3回)-(2014/08/06(Wed) 17:21:01)
Shu様

ありがとうございます。
コントロールを配列にするのですね。
なるほど。

これですとグループ毎に配列化しなければいけないのでしょうか?

なにかコントロールにインデックスのようなものが割り振ってあれば一番楽なのですが・・・。
そういったものはないのですよね?


また例えばパネルにコントロールを複数追加した場合に

foreach などで全てのコントロールを取り出したとして
その順番は何を持って決まるのでしょうか?

追加順だとしても何かしらの数値を見ていると思うのですがどこで判断しているのかなと疑問に思いました。

どうぞよろしくお願いします。
引用返信 編集キー/
■72978 / inTopicNo.6)  Re[4]: 文字を連結して連結した文字列でコントロールにアクセスするには
□投稿者/ shu (606回)-(2014/08/06(Wed) 17:30:23)
No72977 (けん さん) に返信
> Shu様
>
> ありがとうございます。
> コントロールを配列にするのですね。
> なるほど。
ぽぴ王子さんの回答への返信でしょうか?



> これですとグループ毎に配列化しなければいけないのでしょうか?
グループがどのように存在しているかによると思いますが、処理が変わるならグループ毎
に配列化してグループ関係なく処理は同じなら1つの配列でも可能かと思います。



> なにかコントロールにインデックスのようなものが割り振ってあれば一番楽なのですが・・・。
> そういったものはないのですよね?
配列化すれば先頭要素から0,1,2,・・・とインデックスが付きます。配列なので。



> また例えばパネルにコントロールを複数追加した場合に
>
> foreach などで全てのコントロールを取り出したとして
> その順番は何を持って決まるのでしょうか?
>
> 追加順だとしても何かしらの数値を見ていると思うのですがどこで判断しているのかなと疑問に思いました。
ZOrderだったかと思います。コード上ではControlsに追加された順番です。Designerファイルを眺めるとなんとなく
わかるかもしれません。


引用返信 編集キー/
■72989 / inTopicNo.7)  Re[5]: 文字を連結して連結した文字列でコントロールにアクセスするには
□投稿者/ けん (4回)-(2014/08/07(Thu) 14:10:04)
ありがとうございました!
ほぼ理解出来ましたm(__)m

こんな稚拙な質問に付き合って頂き感謝感激です。

また何か有りましたら是非お力をお貸し下さい。

助かりました。
ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -