簡體   English   中英

從輸出列表框中刪除指定項目時如何重新啟用列表框

[英]How to re-enable listbox when removing a specified item from an output listbox

我正在嘗試僅重新啟用與已從輸出列表框中刪除的項目相關的列表框。 例如,如果我從 Body Type 列表框中選擇“Wagon”,從 Package 列表框中選擇“Advance”,名為“lstOutPut”的列表框將顯示以下內容:

表單捕獲

我想要做的是,如果我要刪除“SUV”,我只想重新啟用車身類型列表框,而不是其他

這是我的代碼

private void lstBody_SelectedIndexChanged(object sender, EventArgs e)
{
    if (lstBody.SelectedItem != null)
    {
        lstOutput.Items.Add(lstBody.SelectedItem);
        lstBody.SelectionMode = SelectionMode.None;
        lstBody.Enabled = false;             
    }
}

private void lstPackage_SelectedIndexChanged(object sender, EventArgs e)
{         
    if (lstPackage.SelectedItem != null)
    {
        lstOutput.Items.Add(lstPackage.SelectedItem);
        lstPackage.SelectionMode = SelectionMode.None;
        lstPackage.Enabled = false;
    }
}

這就是我的刪除按鈕

private void btnRemove_Click(object sender, EventArgs e)
{
    //remove selected item only
    while (lstOutput.SelectedItems.Count > 0)
    {
        lstOutput.Items.Remove(lstOutput.SelectedItems[0]);           
    }

    lstBody.Enabled = true;
    lstPackage.Enabled = true;
}

有任何想法嗎?

謝謝。

對於每個列表框,如果lstOutput不存在它的項目,則啟用它:

var listBoxes = new ListBox[] {body, package, wheel, accessories};
foreach(var lst in listBoxes)     
   lst.Enabled = !lst.Items.Cast<string>().Any(x => lstOutput.Items.Contains(x));

假設不同的輸入列表框之間沒有重復值,您可以在btnRemove_Click事件中執行以下btnRemove_Click

 var inputListBoxes = new[] { lstPackage, lstBody };
 while (lstOutput.SelectedItems.Count > 0)
 {
   inputListBoxes.First(x => x.Items.Contains(lstOutput.SelectedItems[0])).Enabled = true;
   lstOutput.Items.Remove(lstOutput.SelectedItems[0]);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM