Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Vb.Net painikkeiden lisääminen ajon aikana.

Sivun loppuun

vp [11.02.2011 15:01:35]

#

Miten voi lisätä ajon aikana painikkeita ja käsitellä niiden tapahtumia VB.net projektissa?

Grez [11.02.2011 15:07:54]

#

Ihan samalla tavalla kuin ne graafisen editorin luomat painikkeet luodaan. Eli katso mallia siitä automaattisesti generoidusta koodista.

Käytännössä luot uuden kontrolliolion, lisäät sen haluamaasi sisältöön ja sitten lisäät siihen haluamasi tapahtumakäsittelijät.

vp [11.02.2011 15:15:57]

#

Se toimii kyllä siinä tilanteessa jos jokainen painike luodaan yksitellen, mutta tarkoitus olisi tilanteen mukaan luoda tarpellinen määrä painikkeita.
VB6 se onnistui tekemällä taulukko painikkeista, VB.net se ei onnistu.

Grez [11.02.2011 15:20:55]

#

vp kirjoitti:

VB6 se onnistui tekemällä taulukko painikkeista, VB.net se ei onnistu.

Miten niin ei onnistu, älä nyt höpöjä puhu.

(Siis sillä graafisella editorilla ei pysty, mutta kysyit nyt mielestäsi miten niitä tehdään ajon aikana)

vp [11.02.2011 16:42:29]

#

Miten se sitten tapahtuu?

neau33 [11.02.2011 16:53:52]

#

Moikka vp!

tsekkaa tämä

vp [14.02.2011 09:25:11]

#

Tolla esimerkillä pystyy kyllä painikkeita tekenmään, mutta ei se valase miten ne saa indeksoitua.

Grez [14.02.2011 10:04:37]

#

No miten nyt yleensä indeksoit muuttujia?

Protected nappi() As System.Windows.Forms.Button

(On muuten jäätävän paljon hankalampi toi VB.Netin syntaksi kuin C#:n. Suosittelen lämpimästi vaihtamaan C#:iin. Ja tämä siis henkilöltä joka on yli kymmenen vuotta koodannut VB:llä ja joitakin vuosia VB.Netillä.)

Seuraavassa indeksoituja nappeja:

Imports System.Windows.Forms
Public Class vpDemoForm
    Protected nappi(9) As Button

    Private Sub NappiClick(ByVal sender As Button, ByVal e As System.EventArgs)
        MessageBox.Show("Nappia " & sender.Name & " painettiin")
    End Sub

    Private Sub vpDemoForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ix As Integer

        For ix = 0 To 9
            nappi(ix) = New Button

            With nappi(ix)
                .Name = "Nappi " & ix
                .Text = "NAPPULA " & ix
                .Location = New System.Drawing.Point(10, 10 + 30 * ix)
                .Size = New Drawing.Size(75, 25)
            End With

            Me.Controls.Add(nappi(ix))
            AddHandler nappi(ix).Click, AddressOf NappiClick
        Next

    End Sub
End Class

Jos nappien määrä ei etukäteen ole tiedossa (eikä halua laittaa mitään ylisuurta taulukkoa, niin 3. rivin voi muuttaa suoraan seuraavaksi:

Protected nappi As New Dictionary(Of Integer, Button)

vp [14.02.2011 12:38:16]

#

Kiitos paljon, pelaa kuin Buickki.


Sivun alkuun

Vastaus

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

Tietoa sivustosta