カスタム項目クラスの名前を出力するリストボックスがあります
public class Item
{
public string @Url { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public Item(string @url, string name, double price)
{
this.Url = url;
this.Name = name;
this.Price = price;
}
public override string ToString()
{
return this.Name;
}
}
私は通常の方法を試しましたが、リストボックスをソートするためのラジオボタンがあるため、インデックスが変更されたため、リストボックスが台無しになります。
例えば
//new item is declared
Dictionary<int, Item> itemList = Dictionary<int, Item> { new Item("f.ca", "name1", 33);
new Item("m.ca", "name2", 44); }
//Items added to listbox
for (int v = 0; v < itemList.Count; v++)
{
itemListBox.Items.Add(itemList[v].Name);
}
//start sorting
var priceSort = from item in itemList
orderby item.Value.Price
select new { item.Value.Name, item.Value.Price };
itemListBox.Items.Clear();
foreach (var i in priceSort)
{
itemListBox.Items.Add(i.Name);
}
//end sorting listbox updated
新しいリストが作成されたので、ボックスが更新されたため、itemlist のアイテムのみを削除する必要があります。
/* This code is what i thought but SelectedIndex say if on 0 and since the sorted by price */
itemList.Remove(itemListBox.SelectedIndex);
items[1] を実際に削除する必要があるときに、items[0] を削除しようとしているという問題があります。itemlistbox の文字列を items 辞書の .Name プロパティと比較する方法はありますか?