Minesweeper


Nikolaus1

Grünschnabel
Hallo
Ich habe mir vorgenommen ein Mineswipper zu programmieren, doch jetzt bin ich hengeblieben und weiß überhaupt nicht ob das so geht.

Code:
Public Class Form1
    Dim XPos, YPos, a, a1, c, c1, m As Single
    Dim B As Button
    Private btnArray(2000) As Button
    Private PicArray(2000) As PictureBox

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        YPos = 50
        XPos = 25
        With Me

            .Width = a * 25 + 75
            .Height = c * 25 + 100
        End With
        While c > c1
            For i As Short = 1 To a
                btnArray(i) = New Button

                With btnArray(i)
                    .BackColor = Color.DarkGray
                    .FlatStyle = FlatStyle.Popup
                    .Name = "Button" & CStr(i)

                    If XPos + .Width > Me.Width Then
                        XPos = 25
                        YPos += 25
                    End If
                    .Width = 25
                    .Height = 25
                    .Top = YPos
                    .Left = XPos
                    XPos += 25
                    AddHandler .Click, AddressOf btnArray_Click
                End With
                Me.Controls.Add(btnArray(i))


            Next
            c1 = c1 + 1
        End While
        c = 0


        While c > c1
            For i As Short = 1 To a
                PicArray(i) = New PictureBox

                With PicArray(i)

                    .Name = "Picture" & CStr(i)

                    If XPos + .Width > Me.Width Then
                        XPos = 25
                        YPos += 25
                    End If
                    .Width = 25
                    .Height = 25
                    .Top = YPos
                    .Left = XPos
                    XPos += 25

                End With
                Me.Controls.Add(PicArray(i))


            Next
            c1 = c1 + 1
        End While
        c = 0
    End Sub

    Private Sub btnArray_Click(ByVal sender As Object, _
                               ByVal e As System.EventArgs)
        ' Click-Ereignis des Button-Arrays auswerten
        Dim itemClicked As Button = CType(sender, Button)
        Dim index As Integer = -1I

        ' Das betroffene Element im Array suchen (allgemein);
        ' Möglich wäre etwa auch das Vorgehen über die eigens
        ' zugewiesene Name-Eigenschaft des Buttons.
        For i As Integer = LBound(btnArray) To UBound(btnArray)
            If btnArray(i) Is itemClicked Then
                index = i
                Exit For
            End If
        Next

        If index > 0 Then ' Element im Array gefunden (sonst index = -1)
            ' Kurze Informations-MessageBox für das Codebeispiel
            MessageBox.Show("Sie haben den Button Nr. " & CStr(index) & " angeklickt", _
                            "Index des Buttons ermittelt", _
                            MessageBoxButtons.OK, _
                            MessageBoxIcon.Information)
        End If

    End Sub

    Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
        End
    End Sub

    Private Sub AnfängerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnfängerToolStripMenuItem.Click
        a = 0
        c = 0
        m = 0
        a = 9
        c = 9
        m = 10
    End Sub

    Private Sub FortgeschrittenerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FortgeschrittenerToolStripMenuItem.Click
        a = 0
        c = 0
        m = 0
        a = 16
        c = 16
        m = 40
    End Sub

    Private Sub ProfiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProfiToolStripMenuItem.Click
        a = 0
        c = 0
        m = 0
        a = 30
        c = 16
        m = 99
    End Sub
End Class

Würde mich sehr über Hilfe Freuen
Mit freundlichen Grüßen Nikolaus1
 

Nikolaus1

Grünschnabel
Naja. Ich weiß nicht wie ich jetzt z.B. einen Button konkret ansteruern kann. und wie der dann heißt und ich würde gerne wissen ob das bisher überhaupt stimmt.
Danke für die so schnelle antwort.

Muss noch dazu sagen. Ich habe auch nicht so viel erfahrung mit Visual Basic.
 

Nikolaus1

Grünschnabel
Das mit dem Namen, naja, hab nicht aufgepasst. Und danke wegen dem Forum, ich habe nur Visual Basic gelesen ung habe mir gedacht, das das richtig ist.
Trotzdem, Danke.
 

Masterclavat

Erfahrenes Mitglied
Ein Control auf einer Form sprichst du generell so an:
Code:
Me.Controls.Item("ControlName")
 
Zuletzt bearbeitet:

Shakie

Erfahrenes Mitglied
Wenn im Designer die Eigenschaft "GenerateMember" auf True gestellt ist (Standardeinstellung), dann kannst du ein Control mit dem Namen, sagen wir "ControlName", auch so ansprechen:
Code:
Me.ControlName
Aber ließ dir doch vielleicht erst mal ein paar Tutorials zu VB.Net durch!
 

Nikolaus1

Grünschnabel
Stimmt da mit der Programmierung von der Erstellung von Button?
Code:
vWhile c > c1
            For i As Short = 1 To a
                btnArray(i) = New Button

                With btnArray(i)
                    .BackColor = Color.DarkGray
                    .FlatStyle = FlatStyle.Popup
                    .Name = "Button" & CStr(i)

                    If XPos + .Width > Me.Width Then
                        XPos = 25
                        YPos += 25
                    End If
                    .Width = 25
                    .Height = 25
                    .Top = YPos
                    .Left = XPos
                    XPos += 25
                    AddHandler .Click, AddressOf btnArray_Click
                End With
                Me.Controls.Add(btnArray(i))


            Next
            c1 = c1 + 1
        End While
        c = 0
Weil ich habe es nicht geschafft bei der Programmierung irgendwie die Buttons anzusteuern.
.
 

Shakie

Erfahrenes Mitglied
Stimmt schon so. Im Click-Event (bei dir wohl btnArray_Click) kannst du den geklickten Button über das Sender-Objekt ermitteln:
Code:
Dim clickedButton As Button = CType(sender, Button)
 

Nikolaus1

Grünschnabel
Blöde Frage. Das muss ich jetzt am Anfang eingeben, bevor ich das erstellen der Buttons programmiere. Und nachher kann ich dann schreiben Button4, oder Button7?
 

Shakie

Erfahrenes Mitglied
Nein.
Schau her:
Code:
Private Sub btnArray_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim clickedButton As Button = CType(sender, Button) '<-- Dieser Button wurde gedrückt!
    ' Jetzt kannst du dir zum Beispiel den Namen des Buttons in einer MessageBox ausgeben lassen:
    MessageBox.Show(clickedButton.Name)
End Sub
Das funktioniert nur weil du diese Code-Zeile bereits hast:
Code:
AddHandler .Click, AddressOf btnArray_Click
 

Neue Beiträge

Forum-Statistiken

Themen
272.360
Beiträge
1.558.632
Mitglieder
187.834
Neuestes Mitglied
jordanx0206