
Combobox C# -> Skrytí určitých položek
Zdravím,
Chtěl bych se zeptat, zda-li nejde nějak skrýt položky v comboboxu.
Mám 20 comboboxů, v každém je celá abeceda a já potřebuji, aby vždy v následujícím comboboxu se skrylo to písmeno, které už bylo použito, ale aby to nebylo tak jednoduché, tak když se to písmeno uvolní, tak se v ostatních comboboxech zase musí objevit. (prostě každé písmeno může být využito maximálně jednou a 5 písmen zůstane volných)
Napadlo mě to přes index, se mi to nedaří udělat.
Předem děkuji za jakékoliv rady a tipy
Proč skrýt? Prostě je tam vůbec nedávej, ne?
Jako, že při vypisování by se vynechalo určité písmeno?
Jako že by kolekce Items tu položku vůbec neobsahovala.
No jo, ale já si potřebuji vybrat ta určitá písmena. Nemůžu to dát tak, že třeba cb1 nebude mít vůbec písmeno A. Potřebuji to udělat tak, aby se buď postupně skrývala, nebo postupně mazala. Ale aby se uvolnění se tam zpět zapsalo
To právě klidně můžeš.
Můžeš si třeba z ComboBoxu podědit vlastní třídu a v ní přepsat metodu SetItemsCore, tím budeš moct nastavovat kompletní Items.
Nebo použiješ původní CB a přidávat/odebírat jednotlivé prvky pomocí metod Remove/InsertAt.
Nad tím jsem uvažoval, ale přijde mi, že by to zabralo asi sakra hodně řádků.
Tak možná deset.
Nevím přesně jestli by to v tomhle případě bylo proveditelné, ale zkusil bych u každého itemu přidat boolovskou vlastnost kterou by jsi pak nabindoval v setteru itemu u komboboxu na vlastonst Visibility + pužil bys konvertor, který by vracel buď visible/colapsed,
Něco jako toto(jen ne v lisboxu, ale comboboxu):
V designeru (Form.designer.cs) si přepíšeš třídu ComboBox na třídu MyComboBox a přidáš EventHandler pro SelectedIndexChanged na metodu LetterChanged.