Ich versuche eine Hangman-Anwendung zu erstellen, aber aus welchen Gründen auch immer kann ich nicht das Wort bekommen, das Sie "raten" müssen, um richtig zu zeigen. Wie Sie in der Schleife sehen können, wird bei jeder Iteration ein neues Label erstellt. Die Texteigenschaft des Labels wird als ein Zeichen von wordString definiert, das als wordLetter definiert ist. Sobald alle Eigenschaften des neuen Labels festgelegt sind, wird es dem Formular hinzugefügt, Punkte werden definiert, um eine Linie unter dem Label zu zeichnen, und xAxis (wird verwendet, um das nächste Label rechts von dem vorherigen zu platzieren) und i werden iteriert. Das Problem ist, nur das erste Label erscheint, oder "P" aus dem WordString "PROGRAM". Ich glaube, das liegt daran, dass jedes Mal, wenn ich die Schleife wiederhole, ein neues Label mit demselben Namen "wordLabel" erstellt wird, das verhindert, dass neue Labels erstellt werden. Ich bin nicht sicher, wie ich das umgehen soll. selbst wenn ich ein Array verwenden würde, müsste ich bei jeder Iteration ein neues Label erstellen.Hinzufügen eines neuen Labels bei jeder Schleifeniteration
Dim point1, point2 As Point
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer
Dim wordString As String = "PROGRAM"
Dim wordLetter As String
Dim xAxis As Integer
Do While i < wordString.Length
Dim wordLabel As New Label
wordLetter = wordString.Chars(i)
wordLabel.Font = New Font("Comic Sans MS", 25)
wordLabel.AutoSize = True
wordLabel.Text = wordLetter
wordLabel.BackColor = Color.Transparent
wordLabel.Location = New System.Drawing.Point(xAxis + 7, 190)
Me.Controls.Add(wordLabel)
point1.X = Convert.ToInt32(wordLabel.Location.X) - 10
point1.Y = Convert.ToInt32(wordLabel.Location.Y) + 40
point2.X = Convert.ToInt32(wordLabel.Size.Width) - 13
point2.Y = Convert.ToInt32(wordLabel.Location.Y) + 40
xAxis += 3
i += 1
Loop
End Sub
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
e.Graphics.DrawLine(Pens.Black, point1, point2)
End Sub
'wordLabel' ist Ihr Variablenname, nicht der Kontrollname. Duplizieren, das das Problem, das du siehst, nicht verursacht, aber du * verlierst * den Verweis auf das Steuerelement, was wahrscheinlich später Probleme verursachen wird. Ich denke, Ihr Problem besteht möglicherweise darin, dass Sie nur 3 Pixel Abstand zwischen den einzelnen Etiketten setzen. Sie ziehen sich wahrscheinlich übereinander. –
Gibt es einen Grund, mehrere Etiketten zu verwenden, anstatt die Buchstaben an ein Etikett anzuhängen? –
@AhmedAbddelhameed Meine Vermutung ist, dass es ihm ermöglicht, besser auf den Unterstreichungen für jeden Buchstaben zu positionieren, da Comic Sans nicht mono-spaced ist. –