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

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

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

Re[4]: コンボボックスの名前を変数にセットして指定したいのですが


(過去ログ 96 を表示中)

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

■57121 / inTopicNo.1)  コンボボックスの名前を変数にセットして指定したいのですが
  
□投稿者/ がながな (67回)-(2011/02/15(Tue) 13:53:36)

分類:[.NET 全般] 

コンボボックスが6つあり、それぞれのコンボボックスのソースに同じデータセットを設定したいのですが、どのようにすればいいのか困っております。
たとえば1つのコンボボックスに設定する場合、下記のようなコードで動作します。

Sub ComboMakeSub1()
Dim XAdapter As SqlDataAdapter
Dim XDataset As New DataSet
Dim XTable As DataTable
Dim Xcount As Integer

Dim MySQL As String
Call cnHanbaiOpen()
MySQL = "select 工程コード,工程名称 from [T007_工程区分] where AD時間=1 order by 工程コード ASC"
XAdapter = New SqlDataAdapter(MySQL, cnHanbai)
XAdapter.Fill(XDataset, "T007_工程区分")
XTable = XDataset.Tables("T007_工程区分")

Me.AD工程コード_01.DataSource = XTable
Me.AD工程コード_01.ValueMember = "工程コード"
Me.AD工程コード_01.DisplayMember = "工程名称"


cnHanbai.Close()


End Sub


上記の場合コンボボックスは「AD工程コード_01」ですが今からしたいのは
コンボボックス「AD工程コード_01」〜「AD工程コード_06」
まで同じソースを設定したいです。


Me.AD工程コード_01.DataSource = XTable
Me.AD工程コード_01.ValueMember = "工程コード"
Me.AD工程コード_01.DisplayMember = "工程名称"
の部分をLOOPでまわして「AD工程コード_01」〜「AD工程コード_06」のソースの設定をしたいのですが、文法がわかりません。
たとえば
dim STR as string="AD工程コード_"
dim Count as integer
for Count=1 to 6
me.controls("AD工程コード_" & format(Count,"00").DataSource = XTable
next
といった具合にしたいのですが、上記ではこう言った文法がないみたいです。
どなたかご教授願えないでしょうか。

引用返信 編集キー/
■57124 / inTopicNo.2)  Re[1]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ マサヤ (255回)-(2011/02/15(Tue) 15:26:25)
T007_工程区分のXTableに工程コード,工程名称がはいっているんですよね?
そして
Me.AD工程コード_01.DataSource = XTable
Me.AD工程コード_01.ValueMember = "工程コード"
Me.AD工程コード_01.DisplayMember = "工程名称"
ここでAD行程コード_01コンボボックスにデータをバインドしています、と。

>LOOPでまわして「AD工程コード_01」〜「AD工程コード_06」のソースの設定をしたいのですが、
同じことをしてあげればいいのではないでしょうか?
loopとか面倒くさがらず。
Me.AD工程コード_02.DataSource = XTable
Me.AD工程コード_02.ValueMember = "工程コード"
Me.AD工程コード_02.DisplayMember = "工程名称"
Me.AD工程コード_03.DataSource = XTable
Me.AD工程コード_03.ValueMember = "工程コード"
Me.AD工程コード_03.DisplayMember = "工程名称"
・・・・
といったようにするしかないのではないでしょうか?
引用返信 編集キー/
■57127 / inTopicNo.3)  Re[2]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ がながな (68回)-(2011/02/15(Tue) 15:51:52)
早速のお返事ありがとうございます。
やはり記述していくしかないですか・・・。
今は1画面に6つ表示していますが今後は20個ぐらい表示しなくてはいけなくなるんで、どうしようか迷っておりました。
引用返信 編集キー/
■57128 / inTopicNo.4)  Re[3]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ ROM専だった人。 (1回)-(2011/02/15(Tue) 16:01:18)
2011/02/15(Tue) 16:02:13 編集(投稿者)

配列に入れて廻すか、コンボボックスをコンテナで囲ってControls取って廻すか。
引用返信 編集キー/
■57129 / inTopicNo.5)  Re[4]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ がながな (69回)-(2011/02/15(Tue) 16:17:33)

すいません
> 配列に入れて廻すか、コンボボックスをコンテナで囲ってControls取って廻すか。
って例えばどのようにすればいいでしょうか?

引用返信 編集キー/
■57130 / inTopicNo.6)  Re[4]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ マサヤ (257回)-(2011/02/15(Tue) 16:17:49)
c#ですみません。
こんな感じでいかがでしょうか?

IList<ComboBox> list = new List<ComboBox>();
list.Add(AD工程コード_01);
list.Add(AD工程コード_02);
list.Add(AD工程コード_03);
foreach (ComboBox combo in list)
{
combo.DataSource = XTable;
combo.ValueMember = "工程コード";
combo.DisplayMember = "工程名称"
}

引用返信 編集キー/
■57138 / inTopicNo.7)  Re[5]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ がながな (71回)-(2011/02/15(Tue) 16:54:04)
たびたびすいません。
この方法はリストボックスにAD工程コード_01〜AD工程コード_06を入れてその入れた値からフィールド名を取るということでしょうか?

引用返信 編集キー/
■57139 / inTopicNo.8)  Re[6]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ マサヤ (260回)-(2011/02/15(Tue) 17:07:13)
コンボボックスのインスタンスをListに格納してあげて、foreachで取り出してそれぞれのコンボボックスにバインドしています。
foreachの中では、フィールド名は意識する必要はありません。
リストに入っているコンボボックスのインスタンスに等しくバインドしているだけですので。
特定のコンボボックスのみにバインドしたい場合はforeachの中で条件分岐すればOKです。
これが配列に入れて廻す、じゃないでしょうか?

引用返信 編集キー/
■57141 / inTopicNo.9)  Re[5]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ やじゅ (1836回)-(2011/02/15(Tue) 18:16:22)
やじゅ さんの Web サイト
No57130 (マサヤ さん) に返信
> foreach (ComboBox combo in list)
> {
> combo.DataSource = XTable;
> combo.ValueMember = "工程コード";
> combo.DisplayMember = "工程名称"
> }

オリジナルの DataTable オブジェクトをそのまま使うと、1つのコンボボックスから項目を選んだときに
同じオブジェクトを適用したコンボボックスが連動しちゃうとか、おもしろいことになります。
Clone/Copy で複製を作成する必要があるでしょうね。
http://bbs.wankuma.com/search.cgi?no=0&word=ComboBox+DataSource+Copy&andor=and&logs=all&PAGE=20
引用返信 編集キー/
■57150 / inTopicNo.10)  Re[1]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ shu (436回)-(2011/02/15(Tue) 21:52:16)
No57121 (がながな さん) に返信
> me.controls("AD工程コード_" & format(Count,"00").DataSource = XTable

Directcast(Me.Controls(String.Format("AD工程コード_{0:00}",Count)), ComboBox)
とすればOK。何回もこれで取得するのはパフォーマンスがよくないと思うので、専用配列等を作った方がいいと思います。
DataSourceへ設定するものはやじゅさん指摘の通り同じものは駄目です。



引用返信 編集キー/
■57161 / inTopicNo.11)  Re[2]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ KKK (3回)-(2011/02/16(Wed) 09:21:56)
No57150 (shu さん) に返信
> ■No57121 (がながな さん) に返信
>>me.controls("AD工程コード_" & format(Count,"00").DataSource = XTable
>
> Directcast(Me.Controls(String.Format("AD工程コード_{0:00}",Count)), ComboBox)
> とすればOK。何回もこれで取得するのはパフォーマンスがよくないと思うので、専用配列等を作った方がいいと思います。
> DataSourceへ設定するものはやじゅさん指摘の通り同じものは駄目です。
>
>
>
If DTSET.Tables(mstrTBNM).Rows.Count > 0 Then
For intloop As Integer = 1 To 34
Dim ctlTXT As Control() = Me.Controls.Find("txt_TOR0" & Format(intloop, "00"), True)
If ctlTXT.Length > 0 Then
CType(ctlTXT(0), TextBox).Text = C_FSFFunc.vbnz(DTSET.Tables(mstrTBNM).Rows(0).Item("TOR0" & Format(intloop, "00")))
End If
Next
End If

見当違いな解答だったらごめんなさい
上記はテキストボックスをループでまわしています。



引用返信 編集キー/
■57188 / inTopicNo.12)  Re[3]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ がながな (72回)-(2011/02/16(Wed) 18:04:41)
たくさんのお返事ありがとうございます。
SHUさんにご質問なのですが、
Directcast(Me.Controls(String.Format("AD工程コード_{0:00}",Count)), ComboBox)
の中にあるCountとは何ですか?
例えばこのまま貼り付けたらCountの部分でエラーが出ます。
よろしくお願いたします。
引用返信 編集キー/
■57192 / inTopicNo.13)  Re[4]: コンボボックスの名前を変数にセットして指定したいのですが
□投稿者/ shu (448回)-(2011/02/16(Wed) 21:56:46)
No57188 (がながな さん) に返信
> たくさんのお返事ありがとうございます。
> SHUさんにご質問なのですが、
> Directcast(Me.Controls(String.Format("AD工程コード_{0:00}",Count)), ComboBox)
> の中にあるCountとは何ですか?
> 例えばこのまま貼り付けたらCountの部分でエラーが出ます。
> よろしくお願いたします。


No57121
> me.controls("AD工程コード_" & format(Count,"00").DataSource = XTable
この部分のCountです。(がながな さんが提示されたコードのCountです)
さらに書くと
Directcast(Me.Controls(String.Format("AD工程コード_{0:00}",Count)), ComboBox).DataSource = XTable
となります。


引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -