Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Visual Studio VB, tekstikentistä array

Rami56 [05.03.2024 08:26:34]

#

Onkohan teillä ohjetta, miten VB.netissä saa tehtyä arrayn esim. teksti- tai label-kentistä? Kenttiä pitäisi olla 81 kappaletta. VB6:lla onnistuu kyllä.

Grez [05.03.2024 10:14:40]

#

Jos oletan että olet "piirrellyt" tekstikenttiä käyttöliittymään ja haluat ne "olemassaolevat" Arrayhin, niin se onnistuu:

Dim tekstikentät = {Textbox1, Textbox2, Textbox3 ... jne }

Jos taas tarkoitit että koodin puolella lisäilisit tekstikenttiä niin

Dim t(80) As TextBox
For i As Integer = 0 To 80
    Dim n = New TextBox()
    'n.Left = ....
    t(i) = n
Next

Rami56 [05.03.2024 12:05:52]

#

Kiitos vastauksesta. Mutta ei minun taidoillani Visual Studio 2022 VB ymmärrä noista, tulee vain monta virheilmoitusta.
Tarkennus vielä. Olen siis tehnyt formiin lukuisia tekstikenttiä. Nimet Ruutu11...Ruutu 89. Jos klikkaan hiirellä jotakin ruutua, tarvitsen siis aika monta samanlaista ohjelmapätkää. Haluaisin, että RuutuXX olisikin osa arrayta ja RuutuXX.text:iin voisi viitata indeksiosoitteella, joka tulee XX paikalle , esim Ruutu(12).text. Tämä onnistui helposti VB6:ssa kopioimalla vain tekstikentän ja antamalla indeksin.

Grez [05.03.2024 13:07:58]

#

No en nyt sit tiedä mitä tuohon sanoisin. Tein VS2022:llä uuden VB.Net Windows Forms sovelluksen .Net 8 käyttäen ja piirsin sinne kolme textboxia. Sitten laitoin Form1 luokkaan seuraavan koodin ja toimi

Public Class Form1

    Dim TekstiBoksit() As TextBox
    Dim t(80) As TextBox

    Public Sub New()
        ' This call is required by the designer.
        InitializeComponent()

        TekstiBoksit = {TextBox1, TextBox2, TextBox3}

        TekstiBoksit(0).Text = "Terve"

        For i As Integer = 0 To 80
            Dim n = New TextBox With {
                .Left = (i Mod 8) * 100,
                .Top = (i \ 8) * 20,
                .Text = "Terve" & i
            }
            Me.Controls.Add(n)
            t(i) = n
        Next
        t(10).Text = "Jotain muuta"
    End Sub
End Class

Rami56 [07.03.2024 08:30:25]

#

Kiitois vastauksesta. Minulla myös VS2022 ja VB
Tein juuri samalla tavalla. 3 textboxia formille ja kopion ohjelmasta.
Alle olen lisännyt tulleet virheilmoitukset.
Taidan nostaa kädet pystyyn ja hakea jotakin muuta ratkaisua peruskysymykseen.
------

Public Class Form1

    Dim TekstiBoksit() As TextBox
        Dim t(80) As TextBox


    Public Sub New()
        ' This call is required by the designer.
        InitializeComponent()

        TekstiBoksit = {TextBox1, TextBox2, TextBox3}   'Error BC30311	Value Of type 'TextBox' cannot be converted to 'VisualStyleElement.TextBox'.

        TekstiBoksit(0).Text = "Terve" 'Error BC30456   'Text' is not a member of 'VisualStyleElement.TextBox'.


        For i As Integer = 0 To 80              ' ERROR BC30517	Overload resolution failed because no 'New' is accessible.
            Dim n = New TextBox With {
            .Left = (i Mod 8) * 100,
                .Top = (i \ 8) * 20,
                .Text = "Terve" & i
            }
            'Error BC30456   'Left' is not a member of 'VisualStyleElement.TextBox'.
            'Error BC30456   'Top' is not a member of 'VisualStyleElement.TextBox'.
            'Error BC30456   'Text' is not a member of 'VisualStyleElement.TextBox'.



            Me.Controls.Add(n)      'Error BC30311	Value Of type 'VisualStyleElement.TextBox' cannot be converted to 'Control'.

            t(i) = n
        Next
        t(10).Text = "Jotain muuta" 'Error BC30456   'Text' is not a member of 'VisualStyleElement.TextBox'.

    End Sub


End Class

Metabolix [09.03.2024 08:38:20]

#

Virheistä päätellen sinulla on väärä TextBox-luokka käytössä, eli Imports-lauseistasi löytyy VisualStyleElement-nimiavaruus mutta oikea luokka tähän käyttöön olisi System.Windows.Forms.TextBox. Jos et saa importteja kuntoon, voit myös käyttää tätä pitkää nimeä pelkän TextBoxin sijaan.

Rami56 [11.03.2024 08:06:46]

#

Suuret kiitokset. Noinhan minulla juurikin oli. Nyt ei tule virheilmoituksia.
Opettelen vasta tätä Visual Studio VB:n käyttöä. Pelkkä VB on enemmän tuttu.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta