所以我在如何讓程式讀取串列并查看尚未添加該專案的問題上畫了一個空白。這是我的代碼,這是我的第一個想法,但我不確定要寫什么,以便用戶無法兩次添加選擇項。
例如,在 lstAvailable 中有一個名為 Floormats 的選項,用戶可以將 Floormats 添加到 lstSelected 但如果他們嘗試之后我需要訊息框來說明已選擇的專案
// CREATE LIST FOR AVAILABLE OPTION PRICES (parallel to listbox)
List<double> dblAvailableItems = new List<double> { 775.18, 567.99, 312.03, 1934.99, 609.82, 1251.04, 190.08, 82.00, 600.00 };
// CREATE LIST FOR SELECTED OPTION PRICES (parallel to listbox - empty to start)
List<double> dblOrder = new List<double>();
public frmPriceCar()
{
InitializeComponent();
}
private void lstAvailableOptions_DoubleClick(object sender, EventArgs e)
{
// DETERMINE IF OPTION HAS NOT ALREADY BEEN SELECTED
if (lstAvailableOptions.SelectedIndex.ToString() == lstSelectedOptions.Items.ToString())
{
MessageBox.Show("Item already added");
return;
}
if (lstAvailableOptions.SelectedIndex > -1)
{
//ADD OPTION TO SELECTED OPTIONS LISTBOX
dblOrder.Add(dblAvailableItems[lstAvailableOptions.SelectedIndex]);
//ADD OPTION PRICE TO SELECTED OPTIONS LIST
lstSelectedOptions.Items.Add(lstAvailableOptions.Items[lstAvailableOptions.SelectedIndex]);
//CALL CALCULATE METHOD TO CALCULATE TOTALS AND DISPLY TO SCREEN
CalcTotal();
}
}
```
uj5u.com熱心網友回復:
無需檢入 UI ( lstAvailableOptions),只需檢入串列本身 ( dblOrder):
if (dblOrder.Contains(lstAvailableOptions.SelectedItem))
{
MessageBox.Show("Item already added");
return;
}
同樣從用戶體驗的角度來看,如果用戶添加了兩次內容,為什么需要用彈出視窗來打擾用戶?只需在您的代碼中默默地做正確的事情(確保它只添加一次):
if (dblOrder.Contains(lstAvailableOptions.SelectedItem)) return;
你甚至可以走得更遠。如果不是:
List<double> dblOrder = new List<double>();
你用:
HashSet<double> dblOrder = new HashSet<double>();
您可以完全跳過檢查它是否已經在串列中。AHashSet不會添加兩次......它會自動確保每個專案只有一個。
uj5u.com熱心網友回復:
這條線
lstAvailableOptions.SelectedIndex.ToString() == lstSelectedOptions.Items.ToString()
將索引與集合進行比較,這是沒有意義的。如果您使用除錯器逐步完成它,您可能會看到您正在比較例如
"1" == "System.Collections.Generic.List`1[System.Double]"
并且這種比較當然總是回傳false。
檢查 lstSelectedOptions 是否包含所選專案,或者直接檢查 dblOrder 是否包含所選專案:
if (dblOrder.Contains(dblAvailableItems[lstAvailableOptions.SelectedIndex])
{
MessageBox.Show("Item already added");
return;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/347438.html
下一篇:如何從一系列串列中洗掉同一列
