Pojmenování ImageListu   zodpovězená otázka

VB.NET, WinForms

Prosím o radu. V aplikaci používám více ImageListů. Potřeboval bych jednoduše pojmenovat jednotlivé ImageListy, tak aby se názvy např. přepisovaly v textu buttonu nebo jako položky comboboxu. V programu mám určení aktuálního ImageListu vyřešeno sada = ImageList1 nebo 2 atd. Obrázky načítám g.DrawImage(sada.Images(0), x, y). Děkuji.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Nějak tomu nerozumím, chcete mít v aplikaci ComboBox, v němž vyberete, ze kterého imagelstu se budou obrázky načítat?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, v podstatě je to tak. Nyní mám místo Comboboxu TextBox s názvy jednotlivých sad obrázků, umístěný v dialogu po dokončení hry (dialog je pozůstatek po verzi, kdy jsem měl pexeso pouze s jednou sadou obrázků). Sadu vybírám : Form1.hra = Me.ListBox1.Text. Výběr sady ve Form1 řeším přes if - elseif - endif :

            If hra = "Zvířátka" Then
                sada = ImageList1
            ElseIf hra = "Večerníčci" Then
                sada = ImageList2
            ElseIf hra = "Květiny" Then
                sada = ImageList3
            End If

Proměnnou hra používám zároveň pro text buttonu.

Toto řešení je sice funkční, ale myslím, že by to šlo řešit elegantněji. Děkuji.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

V tom případě mě napadá například ty textové popisky dát ImageListům do vlastnosti Tag a ComboBox plnit přímo těmi objekty ImageList. Nemám teď otevřené VS, ale mohlo by stači něco jako

ComboBox1.DataSource = Me.Components.OfType(Of ImageList)

Tím dostane kombo přímo kolekci všech ImageListů a pokud nastavíte vlastnost tuším DisplayMember na Tag, tak zobrazí jako text to, co je ve vlastnosti Tag.

No a konkrétní komponentu ImageList, která je vybraná, pak máte ve vlastnosti SelectedValue. Stačí tedy pak tedy jen přetypovat a zbavíte se toho ifu.

sada = DirectCast(ComboBox1.SelectedValue, ImageList)

Navíc pro přidání sady stačí jen na formulář umístit nový ImageList a je to, nemusíte změnit ani čárku v kódu.

Ale ve WinForms jsem už dlouho nedělal, takže názvy vlastností asi budou špatně a asi není úplně čisté k tomuto účelu znásilnit vlastnost Tag.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak nějak jsem si řešení představoval. Narychlo jsem se pokusil aplikaci dle popsaného upravit, bohužel bezúspěšně. Bude to potřebovat více času, který teď ovšem nemám a taky možná víc programátorských zkušeností. Mockrát děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback