Moin Forum,
mein Formular enthält einen SplitContainer, der u.a. ein TableLayoutPanel mit 17 Spalten und Zeilen enthält. Dieses Raster enthält
Pictureboxen, die per Code generiert werden. Die äusseren 4 Spalten und Zeilen sind unsichtbar. Sie werden benötigt, um (gültige)
Züge und Lösungen zu ermitteln. Die sichtbaren 9 Spalten und Zeilen enthalten Spielsteine, deren Wert ich dafür in "PictureBox.Tag"
speichere.
Wie kann ich (ab Zeile 57) die aktuelle Spalte und Zeile des TableLayoutPanel ermitteln bzw.
welches Argument fehlt in Zeile 63?
Die Sub "Spielfeld_Anzeigen" funktioniert. Vielleicht mag ja trotzdem jemand einen Blick darauf werfen...
*knicksmach*
Gruß Peter
mein Formular enthält einen SplitContainer, der u.a. ein TableLayoutPanel mit 17 Spalten und Zeilen enthält. Dieses Raster enthält
Pictureboxen, die per Code generiert werden. Die äusseren 4 Spalten und Zeilen sind unsichtbar. Sie werden benötigt, um (gültige)
Züge und Lösungen zu ermitteln. Die sichtbaren 9 Spalten und Zeilen enthalten Spielsteine, deren Wert ich dafür in "PictureBox.Tag"
speichere.
Visual Basic-Quellcode
- Public Class frmSpielfeld
- ' arrays der class dimensionieren
- Dim intSpielfeld(17, 17) As Integer
- Dim intVersatz_Spalte(3) As Integer
- Dim intVersatz_Zeile(3) As Integer
- ' konstanten der class dimensionieren
- Const conFeld_Unsichtbar As Integer = 99
- ' objekte der class dimensionieren
- Dim imgSpielstein As New Dictionary(Of Integer, Image)
- Dim pbxSpielstein(17, 17) As PictureBox
- Dim rndZufallszahl As New Random
- ...
- Private Sub Spielfeld_Anzeigen()
- ' variablen der sub dimensionieren
- Dim intSpalte As Integer
- Dim intZeile As Integer
- ' alle zellen des spielfeldes durchlaufen
- For intSpalte = 1 To 17
- For intZeile = 1 To 17
- ' neuen spielstein erzeugen
- pbxSpielstein(intSpalte, intZeile) = New PictureBox
- With pbxSpielstein(intSpalte, intZeile)
- ' pruefen, ob sich die aktuelle zelle in den beiden aeusseren spalten oder zeilen des spielfeldes befindet
- If intSpielfeld(intSpalte, intZeile) = conFeld_Unsichtbar Then
- ' ja, daher einen unsichtbaren spielstein erzeugen
- .AllowDrop = False
- .Height = 0
- .Tag = conFeld_Unsichtbar
- .Visible = False
- .Width = 0
- Else
- ' nein, daher einen sichtbaren spielstein erzeugen
- .AllowDrop = True
- .Height = 72
- .Image = imgSpielstein(intSpielfeld(intSpalte, intZeile))
- .SizeMode = PictureBoxSizeMode.CenterImage
- .Tag = intSpielfeld(intSpalte, intZeile)
- .Visible = True
- .Width = 64
- ' addhandler hinzufuegen
- AddHandler .DragDrop, AddressOf Spielstein_DragDrop
- AddHandler .DragEnter, AddressOf Spielstein_DragEnter
- AddHandler .MouseDown, AddressOf Spielstein_MouseDown
- AddHandler .MouseMove, AddressOf Spielstein_MouseMove
- End If
- End With
- ' spielstein hinzufuegen und anzeigen
- tblSpielfeld.Controls.Add(pbxSpielstein(intSpalte, intZeile), intZeile - 1, intSpalte - 1)
- Next
- Next
- End Sub
- ...
- Private Sub Spielstein_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
- ' pruefen, ob die linke maustaste gedrueckt wurde
- If e.Button <> Windows.Forms.MouseButtons.Left Then
- ' nein, daher sub beenden
- Exit Sub
- End If
- Me.txtTest.Text = Me.tblSpielfeld.Controls.GetColumn() ' ?????
- End Sub
- End Class
Wie kann ich (ab Zeile 57) die aktuelle Spalte und Zeile des TableLayoutPanel ermitteln bzw.
welches Argument fehlt in Zeile 63?
Die Sub "Spielfeld_Anzeigen" funktioniert. Vielleicht mag ja trotzdem jemand einen Blick darauf werfen...
*knicksmach*
Gruß Peter