Generování objektů jako String   zodpovězená otázka

VB.NET

VB2010

Ahoj potrebuju poradit - generuju objekty timto zpusobem:

        Dim i As Integer

        i = 2255

        Dim pnl(i) As Panel

        pnl(i) = New Panel
        pnl(i).Name = "pnl1"
        pnl(i).Width = 100
        pnl(i).Height = 100
        pnl(i).BackColor = Color.Black
        pnl(i).Top = 200
        pnl(i).Left = 10
        Me.Controls.Add(pnl(i))

Potreboval bych pokud by to slo aby prvek pnl(i) - i byl jako STRING zkousel jsem to prenastavit ale VB2010 mi na to řve že to musí bít jako Integer?

Neřešil jste toto již někdo ?

Nebo se musím smířit že to bude mít jen číselnou hodnotu ?

Díky

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

Když máte pole čehokoli, tak index prvku v poli je vždycky integer. Z jakého důvodu tam potřebujete string?

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

Pole může mít jako index vždycky jen integer.

Existuje ale asociativní pole, kde jako klíč k záznamu může být třeba string.

Změňte deklaraci pole pnl na tuto:

Dim pnl As New Dictionary(Of String, Panel)

Tím řeknete, že klíče budou typu String a objekty uvnitř typu Panel.

Pracuje se s tím velmi podobně jako s polem.

Akorát pak doporučuji změnit tyto sekvence:

        pnl(i) = New Panel
        pnl(i).Name = "pnl1"
        pnl(i).Width = 100
        pnl(i).Height = 100
        pnl(i).BackColor = Color.Black

na nějaké jiné, které by pořád nepřistupovaly do toho pole - zbytečně se to tím zpomaluje. Nejlepší je udělat na to novou proměnnou a do dictionary to přiřadit až potom.

Dim newPnl = new Panel()
newPnl.Name = "pnl1"
...
pnl("klic") = newPnl
nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět
        Dim pnl As New Dictionary(Of String, Panel)
        Dim newPnl = New Panel()

        Dim nm_obj As String
        nm_obj = "ur5454654gdf5g4df5g4d65fg46d"

        newPnl.Name = "pnl1"
        newPnl.Width = 100
        newPnl.Height = 100
        newPnl.BackColor = Color.Black

        pnl(nm_obj) = newPnl

        Me.Controls.Add(pnl(nm_obj))

nahlásit spamnahlásit spam 1 / 3 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