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

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

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

Re[4]: コントロールの取得順番


(過去ログ 94 を表示中)

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

■56371 / inTopicNo.1)  コントロールの取得順番
  
□投稿者/ ぽん (65回)-(2011/01/12(Wed) 09:50:59)

分類:[.NET 全般] 

現在フォームの中にグループボックスがありまして、その中に4つのコンボボックスと4つのテキストボックスが存在しています。
そこでforeach文を用いて、グループボックスからコンボボックスのみを取り出し、取り出したコンボボックスのSelectedValueプロパティを
取得したいと思っています。
以下でSelectedValueプロパティの値を取得出来たのですが、少し問題がありまして質問させていただきました。

DataRow dRow;
foreach (Control item in groupBox1.Controls)
{
    ComboBox comboBox = item as ComboBox;
    if (comboBox != null)
    {
        dRow["player_id"] = comboBox.SelectedValue;
        // 以下略
    }
}

4つのコンボボックスはそれぞれDBから名前をバインドしております。(DisplayMemberに名前)(ValueMemberにID)
その際にどのような順番でコンボボックスのSelectedValueプロパティの値が取得出来るのでしょうか?

私がデバッグしている時はcomboBox1の後にcomboBox3のIDを取ったりしているので、
comboBox1、2、3、4と順番にSelectedValueの値を取得したいと思っております。

また、その順番を変更するようなことは可能なのでしょうか?
よろしくお願い致します。

引用返信 編集キー/
■56372 / inTopicNo.2)  Re[1]: コントロールの取得順番
□投稿者/ マサヤ (205回)-(2011/01/12(Wed) 10:37:21)
DataTableなどに取得した後にソートしてはいかがでしょうか?
http://www.atmarkit.co.jp/fdotnet/dotnettips/363dtsort/dtsort.html

また、現状のソースをみますと、最終のコンボボックスの値しかDataRowに入りませんが、問題ないのでしょうか?
引用返信 編集キー/
■56375 / inTopicNo.3)  Re[2]: コントロールの取得順番
□投稿者/ ぽん (66回)-(2011/01/12(Wed) 12:06:41)
No56372 (マサヤ さん) に返信

マサヤさんいつもお世話になっております。

> DataTableなどに取得した後にソートしてはいかがでしょうか?
> http://www.atmarkit.co.jp/fdotnet/dotnettips/363dtsort/dtsort.html
やりたいことはcomboBox1のSelectedValueを取得、comboBox2SelectedValueを取得
というように1〜4まであるcomboBoxのSelectedValueを順番に取得したいです。

こういうことは出来るのでしょうか?
データテーブルのデータの中身をソートしても意味がないような気がするのですが、気のせいでしょうか?

> また、現状のソースをみますと、最終のコンボボックスの値しかDataRowに入りませんが、問題ないのでしょうか?
ループ内でNewRow();を行っているので問題ないと思います。

分かりにくくてすみません(TT)
引用返信 編集キー/
■56376 / inTopicNo.4)  Re[3]: コントロールの取得順番
□投稿者/ 魔界の仮面弁士 (2020回)-(2011/01/12(Wed) 12:16:11)
No56375 (ぽん さん) に返信
>>> その際にどのような順番でコンボボックスのSelectedValueプロパティの値が取得出来るのでしょうか?
保証はされていませんが、groupBox1.Controls に Add/AddRange された順といった所では無いかと。

順番が重要なら、Load イベント等であらかじめ List<ComboBox> や 配列などで管理しておき、
それを使って処理した方が良いかもしれません。


> やりたいことはcomboBox1のSelectedValueを取得、comboBox2SelectedValueを取得
> というように1〜4まであるcomboBoxのSelectedValueを順番に取得したいです。
名前が決まっているのなら、foreach ではなく for ループに変更して、
groupBox1.Controls のインデクサあるいは Find メソッドを使っては如何でしょう。
引用返信 編集キー/
■56377 / inTopicNo.5)  Re[1]: コントロールの取得順番
□投稿者/ shu (355回)-(2011/01/12(Wed) 12:28:23)
No56371 (ぽん さん) に返信

(1)反復利用することがなければ4つ程度ならそのまま書いてしまう。
(2)Dictionary<String, ComboBox>を使って項目名とComboBoxを対応付けてしまう。
(3)ComboBoxのTagがあいていれば、Tagに項目名を入れておく。
などもどうでしょう?

引用返信 編集キー/
■56378 / inTopicNo.6)  Re[2]: コントロールの取得順番
□投稿者/ マサヤ (206回)-(2011/01/12(Wed) 12:33:46)
もしかして
>4つのコンボボックスはそれぞれDBから名前をバインドしております。
ここでSQLをorder byとかしたらOKとかはないですよね?
引用返信 編集キー/
■56381 / inTopicNo.7)  Re[3]: コントロールの取得順番
□投稿者/ todo (90回)-(2011/01/12(Wed) 12:44:43)
> その際にどのような順番でコンボボックスのSelectedValueプロパティの値が取得出来るのでしょうか?

デザイン時のZオーダー順で取れます。

デザイン画面→コントロールを右クリック→最前面(最背面)へ移動
で順番を変更できます。

http://www.atmarkit.co.jp/fdotnet/dotnettips/297changezorder/changezorder.html

引用返信 編集キー/
■56382 / inTopicNo.8)  Re[4]: コントロールの取得順番
□投稿者/ ぽん (67回)-(2011/01/12(Wed) 13:07:36)
皆さまこんなにも返信ありがとうございます<(_ _)>
返信が追い付かず、申し訳ありませんが皆さまにまとめて返信する形になってしまいました。

取りあえずzオーダーを変更して順番に取得出来ました。
todo様ありがとうございます。

またマサヤ様、魔界の仮面弁士様、shu様。
アドバイス頂きありがとうございました。

皆さまの方法でも確認したいと思います。

また質問した際にはよろしくお願い致します。







解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -