簡體   English   中英

在Windows窗體中修改ComboBox中的項目

[英]Modifying items in ComboBox in Windows Forms

我有一個ComboBox,可以顯示一長串物品。 表單上有一個功能需要更改這些項目的顯示文本,而無需實際添加或刪除任何項目。 沒有正在進行的數據綁定,我直接訪問“項目”列表。

問題是,如果我修改了“項目”列表中該項目的任何屬性,它不會更新組合框中的文本。 有一個按鈕可以將項目從ComboBox移動到另一個相鄰的ComboBox,並且當它被移動時它會正確顯示,因此問題似乎在於它只是不重繪它。

我嘗試調用Invalidate(),Refresh(),Update(),但是它不起作用。 我想我可以清除ComboBox並讀取所有內容,但是此框可以容納數千個Items,所以我不確定這是否是一種有效的方法。

請嘗試簡單地設置combobox文本屬性:

combobox1.Text = "newText";

當然,您仍然需要像以前一樣更改項目。

您需要執行以下步驟:

  1. 獲取正在考慮的項目的索引
  2. 獲取項目顯示文本或項目本身
  3. 替換項目顯示文本
  4. 重新插入相同索引的項目

這是一個示例代碼:(假設您的商品為字符串類型)

int itemIndex = comboBox1.Items.IndexOf("yourItem");
string itemText = comboBox1.Items[itemIndex].ToString();
itemText = "yourNewString";
comboBox1.Items.Insert(itemIndex, itemText);

如果項目不是字符串類型,請嘗試以下操作:

int itemIndex = comboBox1.Items.IndexOf(/*your item*/);
var item = comboBox1.Items[itemIndex];
//type cast back to the original type
//change the display text i.e. by changing the display member inside your object
comboBox1.Items.Insert(itemIndex, item);

如果您的函數針對多個項目執行此代碼段,則可以遍歷該代碼段

如果沒有數據綁定,似乎無法更新項目標簽。 因此,剩下的唯一事情就是刪除相應的項(Items.RemoveAt),然后再次插入(Items.Insert)。

暫無
暫無

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

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