DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Tabコントロールに張り付けたコンボボックスがすべてのページで同期するのを回避する

環境/言語:[VB2008 win7 ]
分類:[.NET]

こんばんはお世話になっております。
タブコントロールにユーザーコントロールを張り付け、タブを増やすことで同じユーザーコントロールになるようにしています。
ユーザーコントロール上にコンボボックスを張り付けており、ユーザーコントロールのロードイベントでコンボボックスのデータソースににデータテーブルを設定しています。
このコンボボックスをあるタブページで変化させると他のタブページにおいても同じ値が設定されてしまいます。
この動作を回避するにはどのようにしたらよいでしょうか?
ご教示いただければと思います。


ユーザーコントロールロードイベントでコンボボックスに設定
CBO.DataSource = odrTable
CBO.ValueMember = "Value"
CBO.DisplayMember = "Display"
CBO.SelectedIndex = -1


以下タブ増加時のタブ生成方法
If TAB_CONATROL1.TabCount = (TAB_CONATROL1.SelectedIndex + 1) Then

Dim obj_u As New U_CNT()
TAB_CONATROL1.TabPages.Add(Tab1)
Tab1.Controls.Add(obj_u)
End If
それぞれのコンボボックスに同じインスタンスのデータテーブルをDataSourceに設定すると、ご質問頂いたように、それぞれのコンボボックスがシンクロします。
このため、各コンボボックスに対しては、元のデータテーブルのコピーを設定してあげると、それぞれのデータテーブルのインスタンスは別々になるので、質問のような問題は発生しません。
提示のコードであれば、odrTableがDataTableだと仮定して、

CBO.DataSource = odrTable.Copy()

のように別インスタンスを生成するようにすればいいです。
ニーチェさん回答ありがとうございます!無事に解決いたしました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板