Announcement

Collapse
No announcement yet.

Formular: Panels mit Buttons "befüllen"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formular: Panels mit Buttons "befüllen"

    Auf einem Formular befinden sich 2 Panels.

    Diese möchte ich mit mehreren Buttons variabel "füllen" - Größe und Position sind unterschiedlich.

    Fülle ich das erste Panel mit Panel.add funktionert das, sobald ich das zweite Panel füllen will
    stellt er nur noch Blödsinn in beiden Panels dar (bzw. im 1. Panel überhaupt nicht mehr).
    Kommentiere ich das Befüllen des 1. Panels aus, füllt er das 2. Panel wieder so wie es soll.

    Was mache ich da falsch?

    Anbei der Quellcode:


    [highlight=vbnet]Dim j As Integer = 0
    For i = 0 To MeinSpiel.MeineSpielsteine.AnzahlSteine.Count - 1
    Dim Steinchen As Spielstein = MeinSpiel.MeineSpielsteine.AnzahlSteine(i)
    ' Position fuer jeden Spielstein bestimmen.
    Steinchen.Top = PanelSpieler1.Height - Steinchen.Height - (j * 25)
    ' Groesse fuer jeden Spielstein bestimmen.
    Steinchen.Width -= j * 17
    Steinchen.Visible = True
    Steinchen.BackColor = Color.Blue
    PanelSpieler1.Controls.Add(Steinchen)
    j += 1
    Next



    Dim k As Integer = 0
    For i = 0 To MeinSpiel.MeineSpielsteine.AnzahlSteine.Count - 1
    Dim Steinchen As Spielstein = MeinSpiel.MeineSpielsteine.AnzahlSteine(i)
    ' Position fuer jeden Spielstein bestimmen.
    Steinchen.Top = PanelSpieler2.Height - Steinchen.Height - (k * 35)
    ' Groesse fuer jeden Spielstein bestimmen.
    Steinchen.Width -= k * 17
    Steinchen.Visible = True
    Steinchen.BackColor = Color.Blue
    PanelSpieler2.Controls.Add(Steinchen)
    k += 1
    Next[/highlight]
    Zuletzt editiert von Jürgen Thomas; 24.02.2010, 21:56. Reason: [highlight=vbnet] eingefügt; das nächste Mal bitte selber machen!

  • #2
    Hallo Peter,

    ich kenne mich mit VB nur sehr rudimentär aus, aber mir fallen folgende Unstimmigkeiten auf: Willst du wirklich Width festlegen und nicht vielmehr Left? (Das könnte zur Folge haben, dass viele Steinchen außerhalb des Spielfelds landen.) Wieso wird zwischen j*25 und k*35 unterschieden? Das sieht doch sehr nach einem Tippfehler aus.

    Gruß Jürgen

    Comment


    • #3
      Hallo,

      nein leider, daran liegt es daran nicht.

      Width ist die Breite des Buttons, Top und Left bestimmen die Position.

      Hat damit leider nichts zu tun.

      Peter

      Comment


      • #4
        AnzahlSteine?? Soll das ein Array von Steinchen sein wobei Steinchen eine Ableitung von Button ist? Wenn ja unglücklicher Name.

        Code:
        Dim Steinchen As Spielstein = MeinSpiel.MeineSpielsteine.AnzahlSteine(i)
        So erhälst du natürlich eine Referenz auf das Steinchen im Array. Keine Copy davon wenn du das dachtest. Das machst du auf beiden Panels und somit versuchst das gleiche Steinchen auf beiden Panels zu haben. Ein Control kann aber logischerweise nur genau an einer Stelle sein. Wenn du also ein Steinchen durch hinzufügen zu einer Controls Collection eines Panels auf dieses Panel bewegst so bewegst du es zwangsweise von seiner vorherigen Position weg.

        Comment

        Working...
        X