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

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

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

Re[2]: 複数のcomboboxが連動してしまう


(過去ログ 165 を表示中)

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

■95340 / inTopicNo.1)  複数のcomboboxが連動してしまう
  
□投稿者/ どじょう (1回)-(2020/07/17(Fri) 09:38:36)

分類:[C#] 

コンボボックスが4つあります。itemは全て同じ内容です。
下記のコードだとcomboBox1で何かを選択するとcomboBox2〜4も連動してしまいます。
これを連動させないでitemを取り出すにはどのようにすればいいですか?

public Form1()
{
InitializeComponent();

var OsushiItemsValue = new List<Osushi>()
{
new Oshushi(){ OsushiDisplay = "", OsushiItemsValue = ""},
new Oshushi(){ OsushiDisplay = "トロ", OsushiItemsValue = "500" },
new Oshushi(){ OsushiDisplay = "赤身", OsushiItemsValue = "300" },
new Oshushi(){ OsushiDisplay = "いくら", OsushiItemsValue = "400" }
};

comboBox1.DataSource = OsushiItemsValue;
comboBox1.DisplayMember = "OsushiDisplay";
comboBox1.ValueMember = "OsushiItemsValue";

comboBox2.DataSource = OsushiItemsValue;
comboBox2.DisplayMember = "OsushiDisplay";
comboBox2.ValueMember = "OsushiItemsValue";

comboBox3.DataSource = OsushiItemsValue;
comboBox3.DisplayMember = "OsushiDisplay";
comboBox3.ValueMember = "OsushiItemsValue";

comboBox4.DataSource = OsushiItemsValue;
comboBox4.DisplayMember = "OsushiDisplay";
comboBox4.ValueMember = "OsushiItemsValue";


}

引用返信 編集キー/
■95342 / inTopicNo.2)  Re[1]: 複数のcomboboxが連動してしまう
□投稿者/ Hongliang (1063回)-(2020/07/17(Fri) 09:57:27)
DataSourceが同じ場合、各コントロールはBindingContextを通じて選択している項目を共有します。
これは、例えばコンボボックスでアイテムを選択し、そのアイテムのNameプロパティやAgeプロパティをそれぞれのテキストボックスで編集する、というシナリオが想定されています。

なので、選択を分けるには、

1. データソースを別にする。それぞれOsushiItemsValue.ToArray()で別の配列オブジェクトにするなど。
2. BindingContextを別にする。comboBox2.BindingContext = new BindingContext()など。

の2通りの方法があります。
引用返信 編集キー/
■95350 / inTopicNo.3)  Re[2]: 複数のcomboboxが連動してしまう
□投稿者/ どじょう (2回)-(2020/07/17(Fri) 11:56:21)
2の方法で簡単に出来ました。
Hongliangさんありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -