Miten voi lisätä ajon aikana painikkeita ja käsitellä niiden tapahtumia VB.net projektissa?
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.
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.
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)
Miten se sitten tapahtuu?
Moikka vp!
Tolla esimerkillä pystyy kyllä painikkeita tekenmään, mutta ei se valase miten ne saa indeksoitua.
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)
Kiitos paljon, pelaa kuin Buickki.
Aihe on jo aika vanha, joten et voi enää vastata siihen.