0

フォームに 2 つのリストボックスがあり、データベースの最初のリストボックスにいくつかのデータをバインドしました。ボタンが押されたときに、最初のリストボックスの選択されたアイテムを2番目のリストボックスに表示する必要があります。一度に 1 つの選択したアイテムを表示することはできますが、複数の選択したアイテムを表示することはできません。私はハッシュテーブルを使用しました。次のコードは、この概念に慣れていない私を助けてください。

Hashtable ht = new Hashtable();
ht.Add(listbox1.SelectedValue.ToString(),listbox1.Text.ToString());
int i = 0;
foreach (string ent in ht.Values)
{   
    string[] name = new string[listbox1.Items.Count];
    for (i = 0; i < listbox1t.SelectedItems.Count; i++)
    {     
        name[i] = listbox1.Text;
        this.listbox2.Items.Add(name[i]);
    } 
    listbox2.DisplayMember = ht.Values.ToString();
    listbox2.ValueMember = ht.Keys.ToString();
}
4

2 に答える 2

0

リストをデータソースとして最初のリスト コントロールに割り当てます。

listBoxControl1.Datasource = new List<string>() {"one","two","three","four"};

そしてselectedvaluechangedイベントで...

var tmp = listBoxControl1.SelectedItems.Cast<string>();
listBoxControl2.datasource = tmp.ToList<string>();

動作するはずです...

例として文字列を使用しましたが、代わりに使用するクラスにキャストする必要があります。そして...コンストラクターでdisplayvalueとvaluememberを割り当てます。何度も行う必要はありません。

于 2012-09-05T11:50:36.823 に答える
0

DisplayMember表示されるものではなく、Itemsコレクション内の各オブジェクトに対して評価されるプロパティの名前です。たとえば、顧客を表すオブジェクトの場合はFullName( MSDN リンク、例が含まれています)。

ValueMemberオブジェクトを一意に識別するプロパティの名前が含まれている必要がありますCustomerId

于 2012-09-05T11:36:52.417 に答える