私のアプリケーションは、画像の上にボックスを描画できる winform で構成されています。これらのボックスには、座標、タイプ (メイン クラスから派生したすべてのFormBox
クラス)、および可能なgroup
引数 (エクスポート用に生成された XML 内) があります。
このグループ引数は、ユーザーが ComboBox から選択します。最初は、ComboBox は空で、ユーザーGroupName
は 1 つのタイプのボックスに を設定して、同じタイプの他のボックスの ComboBox リストを作成することができます。これにより、それらをグループ化するかどうかを指定できます。
現在、複数のボックス タイプのグループ化を組み合わせる必要があり、この ComboBox を設定する方法を求めて頭を壁にぶつけています。
1 つのボックス タイプの場合、実際には問題はありません。
cboUserField_GroupName.DataSource = (from aBox in someFormData.Boxes
where (aBox is UserContentFormBox) select (aBox as UserContentFormBox)).GroupBy(x => x.GroupName).Select(x => x.First()).ToList();
cboUserField_GroupName.ValueMember = "GroupName";
しかし、2 つの別個のリストがあり、それぞれに の子クラスからのオブジェクトのコレクションがFormBox
取り込まれているため、ComboBox コントロールを結合リストにバインドしたいと思いますGroupName
。文字列であるかオブジェクトであるかはあまり重要ではありません。これは、主に単純な から value メンバーが何であるかを理解できなかったため、あまり効果がありませんでしたList<string>
。さらに、とにかくリストが null オブジェクトでいっぱいになってしまったためです。
List<string> groupNames = (from aBox in someFormData.Boxes where (aBox is UserContentFormBox || aBox is VATReturnFormBox) select aBox.GroupName).Distinct().ToList();
cboUserField_GroupName.DataSource = groupNames.ToList();
つまり、基本クラスから派生したオブジェクトで (ラムダを使用して) 埋められたリストに ComboBox コントロールをバインドするにはどうすればよいでしょうか? バインディングはGroupName
プロパティ上にある必要があります。
List<FormBox>
各リストを簡単に結合できる に戻す必要がありますか? これを行うための他のより良い方法はありますか?