簡體   English   中英

禁用ComboBox中的項目C#

[英]Disabling item in a ComboBox C#

我發現在這里禁用ComboBox中的某些項目似乎是一個簡單的解決方案。 它指出:

您可以通過在表達式的開頭添加單個反斜杠來禁用列表框或組合框中的項目。

但是,如果我寫

testBox.Items.Add("\Test item");

要么

testBox.Items.Add(\"Test item");

它在VS2010中給出了語法錯誤。 也許這個功能在2005年以后的版本中被禁用了?

如果我通過像這樣的VS2010設計師放置物品

\Test item

或者我寫

testBox.Items.Add("\\Test item");

然后它出現反斜杠而不是禁用。

因此我的問題是: 這種方法是否可用,我只是無法理解如何使用它,或者我必須創建一個自定義ComboBox來實現我的目標(標題中)?

遺憾的是,組合框控制是不可能的。

我建議只從組合框列表中刪除該項目,而不是嘗試禁用它。

使用以下三種方法之一:

// To remove item with index 0:
comboBox1.Items.RemoveAt(0);
// To remove currently selected item:
comboBox1.Items.Remove(comboBox1.SelectedItem);
// To remove "Tokyo" item:
comboBox1.Items.Remove("Tokyo");

如果您絕對需要禁用項目,則需要創建自定義組合框。

更新1:這不起作用,但我將其保留原樣,以便下面的評論有意義。

更新2:回答你的問題...經過一段谷歌搜索后,我相信你用WinForms實現這一目標的唯一選擇是按照你的建議創建你自己的控件。

我懷疑使用以多個反斜杠開頭的項目的規則也適用於轉義序列。 怎么樣:

testBox.Items.Add("\]Test Item");

我無法測試它,但它看起來應該可以工作。

一般來說:你需要通過編寫\\\\來逃避反斜杠。 否則編譯器會嘗試將\\T解釋為轉義序列(不存在)。 我想設計師已經為你做了這個,但你總是可以看看生成的源代碼;)

關於禁用組合框項目:您鏈接的文檔似乎適用於ListBoxes,而不適用於ComboBoxes。 此外,它指的是VisualFox Pro,而不是Windows.Forms。 所以我想這不起作用;)

根據此討論 ,您將需要子類化控件並覆蓋其繪制處理程序。

但在此之前,我只想刪除(或不添加)您要禁用的項目。

暫無
暫無

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

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