6

同じDisplayMemberであるが異なるValueMember2つのアイテムがあり、プログラムで2つのアイテムの1つを選択したいのですが、これを行うにはどうすればよいですか?

アイテム:

123 -> Peter Pan
234 -> John Doe
345 -> Peter Pan

最後の「ピーターパン」は選べません

Listbox1.FindStringExact("Peter Pan");

これは「ピーターパン」の最初の出現のみを返すためです。以下も、選択したアイテムを設定するだけで、リストには表示されないため、機能しません。

Listbox1.SelectedItem = dataTable.Rows.Find(345);

誰がこれを手伝ってくれる?

自分でさらに情報を見つけました。リストは並べ替えDataTableられているため、(リストを埋めるために使用される)を更新すると、リストが再分類され、編集されたアイテムの代わりにあったアイテムが選択されているように見えます。

Listbox1.FindStringExactDisplayMemberが異なる場合にのみ機能します。

4

2 に答える 2

4

リストコントロールのSelectedValueプロパティを使用できます。

Listbox1.SelectedValue = 345;
于 2011-02-07T13:45:58.057 に答える
2

Items.Addではなく、ListBoxコントロールのDataSourceプロパティを介してデータを割り当てる必要があります。その後、ValueMemberを使用してアイテムを選択できます。

listBox1.DataSource = GetPeople();
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";

// Now you can use
listbox1.SelectedValue = 345;

更新:ItemsはListBoxクラスのメンバーですが、SelectedValueはListControlプロパティであり、DataSourceのみを使用できます。

于 2011-02-07T14:00:17.943 に答える