Поточно-ориентированным способом вы можете сделать это довольно просто (если вы хотите играть только с цветами):
private delegate void SetBackColorDelegate(int index, Color color);
private void SetBackColor(int index, Color color)
{
if (cboIndexLanguage.InvokeRequired)
{
cboIndexLanguage.Invoke(new SetBackColorDelegate(SetBackColor), new object[] { index, color });
}
else
{
cboIndexLanguage.Items[index].BackColor = color;
}
}
Другими словами, вы можете просто удалить элементы из поля со списком, но сохранить их в некоторой структуре данных f.ex:
class ComboElement
{
public String ComboElementText { get; set; }
public int Index { get; set; }
public ComboElement(String elementText, int index)
{
ComboElementText = elementText;
Index = index;
}
}
//* List of hidden elements.
List<ComboElement> hiddenElements = new List<ComboElement>();
затем вы захотите показать его снова, вы можете взять его отсюда и вставить в нужное место (вы знаете индекс).