Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET buttoneiden luonti suoraan koodissa

Rautakivi [25.10.2007 21:59:45]

#

Saakos VB.NETillä luotua itse koodissa buttoneita ilman että design tilassa piirtää niitä etukäteen ja koodissa sitten kordinaateilla siirtelee niitä ja muuttelee niiden kokoa? Tarkoitus on luoda buttoneista eräänlainen taulukko, jonka koko voi vaihdella suuresti ja ei viitsisi luoda reserviin älytöntä määrää valmiita buttoneita, joita sitten kaikkia tarvii tai ei. Olisi kätevempi koodissa katsoa paljonko niitä tilanteen mukaan tarvii ja luo ne ja sen jälkeen heivaa menemään tarpeettomina, kun niitä ei tarvitse enään.

neau33 [26.10.2007 07:14:36]

#

No Moikka Rautakivi!

here's the whole shit...

Protected WithEvents nappi As System.Windows.Forms.Button
'...
'[k]valmiiksi generoitua paskaa...[/k]
'...

Private Sub Button1Click(sender As System.Object, e As System.EventArgs)

    nappi = New Button

    With nappi

      .Name = "Nappi"
      .Text = "NAPPULA"
      .Location = New System.Drawing.Point(10, 10)
      .Size = New Size(75, 25)

    End With

  Me.Controls.Add(nappi)
  AddHandler nappi.Click, AddressOf nappiClick

End Sub


Private Sub NappiClick(sender As System.Object, e As System.EventArgs)

  getSomeAction(sender)

End Sub

Protected Sub getSomeAction(obj)

  messagebox.Show(obj.Name)
  RemoveHandler nappi.Click, AddressOf nappiClick
  Me.Controls.Remove(nappi)
  nappi = Nothing

End Sub

Jokkeri [01.11.2007 20:37:06]

#

Voisiko joku kertoa miten sama tehdään Visual Basic 6:lla?

Antti Laaksonen [01.11.2007 21:34:41]

#

Lisää formille nappi Command1, muuta sen Index-ominaisuudeksi 0 ja kirjoita:

Private Sub Command1_Click(Index As Integer)
    ' Index kertoo, mistä napista on painettu
    MsgBox "Painoit napista " & Index
End Sub

Private Sub Form_Load()
    Dim i As Integer
    ' luodaan viisi uutta nappia (Command1(1)...Command1(5))
    For i = 1 To 5
        Load Command1(i)
        ' lasketaan napin paikka edellisen napin avulla
        Command1(i).Top = Command1(i - 1).Top + 500
        ' muutetaan nappi näkyväksi
        Command1(i).Visible = True
    Next
End Sub

Vastaus

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

Tietoa sivustosta