Moin Forum,
mein Posting von Ende Mai hatte ich leider übereilt als "Erledigt" markiert. Seit dem google, lese und teste ich, ohne auf einen "grünen Zweig zu kommen". Erschwerend kommt hinzu, dass ich nur sehr rudimentäre Englisch-Kenntnisse besitze.
Mein Formular enthält in einem SplitContainer (splSpielfeld) u. a. ein TableLayoutPanel (tblSpielfeld) mit 17 Zeilen und Spalten. Die äußeren vier Zeilen und Spalten werden benötigt, um gültige Züge und Kombinationen ermitteln zu können. Der sichtbare Bereich des TableLayoutPanel beträgt demnach nur neun Zeilen und Spalten.
Der folgende Code erzeugt für jede Zelle des TableLayoutPanel eine Picturebox (pbxSpielstein), die - im sichtbaren Bereich - als Spielstein mit unterschiedlichen Motiven (imgSpielstein) darstellt wird. Das Array intSpielfeld enthält die dafür notwendigen numerischen Werte.
Die Anzeige der generierten Pictureboxen funktioniert einwandfrei. Ich bin mir allerdings nicht sicher, ob der Code auch DragAndDrop-Geeignet ist. Wer mag ein oder zwei Auge(n) darauf werfen?
Per DragAnd Drop sollen zwei Spielsteine ihre Plätze tauschen. Und damit kommen wir zu meinem Problem ...
In der Sub Spielstein_MouseDown (Zeile 357) möchte ich u.a. die Koordinaten eines Spielsteines ermitteln. Mittlerweile bin ich von der Vielfalt der Fehlermeldungen regelrecht *hust* fasziniert. Ich habe leider nach wie vor keine Vorstellung, wie ich z. B. GetCellPosition, GetColumn, GetPositionFromControl oder auch GetRow mit - per Code erzeugten - Pictureboxen anwenden muss. Und es wird für mich auch nicht einfacher, wenn nach einem "tblSpielfeld.GetRow( )" bzw. einem " ... wurde kein Argument angegeben" u. a. auch ein AudioPlayMode in der Aufzählung enthalten ist.
Ich gehe einfach einmal davon aus, dass ich z.B. ein "GetRow" auch ohne ein explizites "SetRow" nutzen kann. Schließlich gebe ich ja in der Zeile 361 auch die Koordinaten an.
Wer mag etwas zu meiner Erleuchtung beitragen? *knicksmach*
Gruß Peter
mein Posting von Ende Mai hatte ich leider übereilt als "Erledigt" markiert. Seit dem google, lese und teste ich, ohne auf einen "grünen Zweig zu kommen". Erschwerend kommt hinzu, dass ich nur sehr rudimentäre Englisch-Kenntnisse besitze.
Mein Formular enthält in einem SplitContainer (splSpielfeld) u. a. ein TableLayoutPanel (tblSpielfeld) mit 17 Zeilen und Spalten. Die äußeren vier Zeilen und Spalten werden benötigt, um gültige Züge und Kombinationen ermitteln zu können. Der sichtbare Bereich des TableLayoutPanel beträgt demnach nur neun Zeilen und Spalten.
Der folgende Code erzeugt für jede Zelle des TableLayoutPanel eine Picturebox (pbxSpielstein), die - im sichtbaren Bereich - als Spielstein mit unterschiedlichen Motiven (imgSpielstein) darstellt wird. Das Array intSpielfeld enthält die dafür notwendigen numerischen Werte.
Visual Basic-Quellcode
- Public Class frmSpielfeld
- ' datenfelder dimensionieren
- Dim intSpaltenversatz(3) As Integer
- Dim intSpielfeld(17, 17) As Integer
- Dim pbxSpielstein(17, 17) As PictureBox
- Dim intZeilenversatz(3) As Integer
- ' konstanten dimensionieren
- Const conSpiel_Dauer As Integer = 300
- Const conZelle_Unsichtbar As Integer = 99
- ' objekte dimensionieren
- Dim imgSpielstein As New Dictionary(Of Integer, Image)
- ...
Visual Basic-Quellcode
- Private Sub Spielsteine_Generieren()
- ' variablen dimensionieren
- Dim intSpalte As Integer
- Dim intZeile As Integer
- ' alle zellen des spielfeldes durchlaufen
- For intSpalte = 1 To 17
- For intZeile = 1 To 17
- ' picturebox erzeugen
- pbxSpielstein(intSpalte, intZeile) = New PictureBox
- With pbxSpielstein(intSpalte, intZeile)
- ' pruefen, ob die aktuelle zelle des spielfeldes als unsichtbar gekennzeichnet ist
- If intSpielfeld(intSpalte, intZeile) = conZelle_Unsichtbar Then
- ' ja, daher eine unsichtbare picturebox generieren
- .AllowDrop = False
- .Height = 0
- .Tag = conZelle_Unsichtbar
- .Visible = False
- .Width = 0
- Else
- ' nein, daher eine sichtbare picturebox generieren
- .AllowDrop = True
- .Cursor = Cursors.Hand
- .Height = 72
- .Image = imgSpielstein(intSpielfeld(intSpalte, intZeile))
- .SizeMode = PictureBoxSizeMode.CenterImage
- .Tag = intSpielfeld(intSpalte, intZeile)
- .Visible = True
- .Width = 64
- ' addhandler hinzufuegen
- AddHandler .MouseDown, AddressOf Spielstein_MouseDown
- End If
- End With
- ' picturebox der aktuellen zelle des tablelayoutpanel hinzufuegen
- tblSpielfeld.Controls.Add(pbxSpielstein(intSpalte, intZeile), intZeile - 1, intSpalte - 1)
- Next
- Next
- End Sub
Die Anzeige der generierten Pictureboxen funktioniert einwandfrei. Ich bin mir allerdings nicht sicher, ob der Code auch DragAndDrop-Geeignet ist. Wer mag ein oder zwei Auge(n) darauf werfen?
Per DragAnd Drop sollen zwei Spielsteine ihre Plätze tauschen. Und damit kommen wir zu meinem Problem ...
In der Sub Spielstein_MouseDown (Zeile 357) möchte ich u.a. die Koordinaten eines Spielsteines ermitteln. Mittlerweile bin ich von der Vielfalt der Fehlermeldungen regelrecht *hust* fasziniert. Ich habe leider nach wie vor keine Vorstellung, wie ich z. B. GetCellPosition, GetColumn, GetPositionFromControl oder auch GetRow mit - per Code erzeugten - Pictureboxen anwenden muss. Und es wird für mich auch nicht einfacher, wenn nach einem "tblSpielfeld.GetRow( )" bzw. einem " ... wurde kein Argument angegeben" u. a. auch ein AudioPlayMode in der Aufzählung enthalten ist.
Ich gehe einfach einmal davon aus, dass ich z.B. ein "GetRow" auch ohne ein explizites "SetRow" nutzen kann. Schließlich gebe ich ja in der Zeile 361 auch die Koordinaten an.
Wer mag etwas zu meiner Erleuchtung beitragen? *knicksmach*
Gruß Peter