Countdown stoppen zum richtigen Moment.

  • VB.NET

Es gibt 41 Antworten in diesem Thema. Der letzte Beitrag () ist von davut.

    Countdown stoppen zum richtigen Moment.

    Hallo Leute,

    Ich habe mir einen kleinen Countdown zusammen gebastelt und nun finde ich meinen Fehler nicht mehr. Mein Problem ist ,dass wenn Label1 auf 0 ist der Countdown stoppt. Ich möchte aber, dass der Label1 auf 0 kommt und Label2 60 sek weiter läuft.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Label1.Text = 5
    3. Label2.Text = 00
    4. Timer1.Start()
    5. Timer2.Start()
    6. End Sub
    7. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    8. Label1.Text = Label1.Text - 1
    9. If Label1.Text = 0 Then
    10. Timer1.Stop()
    11. Timer2.Stop()
    12. Label1.Text = 5
    13. Label2.Text = 00
    14. End If
    15. End Sub
    16. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    17. Label2.Text = Label2.Text - 1
    18. If Label2.Text = 0 Then
    19. Label2.Text = 60
    20. End If
    21. End Sub


    Timer1 hat einen Intervall von 60000
    Timer2 hat einen Intervall von 1000

    Ich habe mir einige Sachen im Internet angeschaut finde aber nichts passendes.
    Ich hoffe einer von Euch kann mir helfen.

    Mit freundlichen Grüßen
    K4RTOFF3L
    Gruß K4RTOFF3L

    Das Problem zu erkennen ist wichtiger, als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung. - Albert Einstein
    Hey K4RTOFF3L,

    willkommen im Forum 8o

    erst mal ist wichtig, dass Du OPTION STRICT ON machst. Beschreib bitte, was Dein Programm als Ganzes machen soll, dann finden wir ne passende Lösung.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    du hast in deiner if-abfrage stehen, dass wenn label1 auf 0 steht, label 2 auch auf 0 steht, das ist das problem

    ein viel größeres problem ist aber: du benutzt kein Option Strict On
    schreib dies bitte ganz oben in die erste Codezeile

    btw. das sieht mir stark nach YouTube Tutorials aus. Guckst du selber welche? Wenn ja, lass dies bitte sein, du lernst in fast allen Videos falsche Sachen.

    Außerdem empfehle ich Neulingen immer folgendes Buch zu lesen: Klaus Löffelmann - Das Entwicklerbuch 2008
    Huhu spaceyX,

    Danke.
    Danke für den Tipp mit "Option Strick On". Ich habe es angeschaltet und werde mich jetzt informieren was es bring.
    Nun zu meinem Programm. Ich möchte, dass mein Programm ,wenn ich auf einen Button drücke, einen Countdown startet. Der Countdown soll von mir vorgegen werden können. Die Verbleibende Zeit soll als Label im Programm angezeigt werden.

    Hallo Kai996,

    es ist leider ein "Youtube"-Tutorial. Habe es mir aus Verzweiflung angeschaut.
    Option Strict ist jetzt auf On.
    Vielen Dank für den Buchtipp. Ich werde mir das Buch mal Downloaden und es durchlesen

    MfG
    K4RTOFF3L
    Gruß K4RTOFF3L

    Das Problem zu erkennen ist wichtiger, als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung. - Albert Einstein
    Hier hast Du mal nen Beispielcode für einen ganz einfachen CountDown

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private WithEvents _t As New Timer With {.Interval = 1000}
    3. Private _countDown As Integer = 0
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. If Integer.TryParse(TextBox1.Text, _countDown) Then
    6. Label1.Text = _countDown.ToString()
    7. _t.Start()
    8. Else
    9. MessageBox.Show("Nur Zahlen erlaubt!")
    10. End If
    11. End Sub
    12. Private Sub _t_Tick(sender As Object, e As EventArgs) Handles _t.Tick
    13. _countDown -= 1
    14. Label1.Text = _countDown.ToString()
    15. If _countDown = 0 Then
    16. _t.Enabled = False
    17. MessageBox.Show("Zeit abgelaufen")
    18. End If
    19. End Sub
    20. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    ist das was ihr pro's

    der code
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim a As Long = 1
    3. Dim b As String = "Tag"
    4. Dim c As Long = 1
    5. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    6. Timer1.Start()
    7. TextBox1.Hide()
    8. End Sub
    9. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    10. Label1.Text = Label1.Text + a
    11. End Sub
    12. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    13. If Label1.Text = 60 Then
    14. Label1.Text = 0
    15. Label2.Text = Label2.Text + a
    16. End If
    17. If Label2.Text = 60 Then
    18. Label2.Text = 0
    19. Label3.Text = Label3.Text + a
    20. End If
    21. If Label3.Text = 24 Then
    22. Label3.Text = 0
    23. Label4.Text = b + c.ToString
    24. c = c + 1
    25. c = c + a
    26. End If
    27. End Sub
    28. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    29. Timer2.Interval = 1000
    30. If CheckBox1.Checked = True Then
    31. For i = 1 To 6
    32. Controls("Button" + i.ToString()).Enabled = False
    33. Next
    34. Label1.Text = Label1.Text + a
    35. End If
    36. If CheckBox2.Checked = True Then
    37. For i = 1 To 6
    38. Controls("Button" + i.ToString()).Enabled = True
    39. Next
    40. Label1.Text = Label1.Text - a
    41. End If
    42. If Label3.Text = 0 Then
    43. If Label2.Text = 0 Then
    44. If Label1.Text = 0 Then
    45. TextBox1.Show()
    46. Timer2.Stop()
    47. End If
    48. End If
    49. End If
    50. End Sub
    51. Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    52. Timer2.Start()
    53. End Sub
    54. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    55. Label1.Text = Label1.Text - a
    56. End Sub
    57. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    58. Label2.Text = Label2.Text + a
    59. End Sub
    60. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    61. Label2.Text = Label2.Text - a
    62. End Sub
    63. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    64. Label3.Text = Label3.Text + a
    65. End Sub
    66. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    67. Label3.Text = Label3.Text - a
    68. End Sub
    69. Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
    70. Label2.Text = "00"
    71. Label3.Text = "00"
    72. Label4.Text = ""
    73. Label1.Text = "00"
    74. End Sub
    75. End Class



    das aussehen

    Spoiler anzeigen

    VB.NET-Quellcode

    1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class Form1
    3. Inherits System.Windows.Forms.Form
    4. 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Me.components = New System.ComponentModel.Container()
    23. Me.Label1 = New System.Windows.Forms.Label()
    24. Me.Label2 = New System.Windows.Forms.Label()
    25. Me.Label3 = New System.Windows.Forms.Label()
    26. Me.Button1 = New System.Windows.Forms.Button()
    27. Me.Button2 = New System.Windows.Forms.Button()
    28. Me.Button3 = New System.Windows.Forms.Button()
    29. Me.Button4 = New System.Windows.Forms.Button()
    30. Me.Button5 = New System.Windows.Forms.Button()
    31. Me.Button6 = New System.Windows.Forms.Button()
    32. Me.CheckBox1 = New System.Windows.Forms.CheckBox()
    33. Me.Button7 = New System.Windows.Forms.Button()
    34. Me.CheckBox2 = New System.Windows.Forms.CheckBox()
    35. Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
    36. Me.Label4 = New System.Windows.Forms.Label()
    37. Me.Timer2 = New System.Windows.Forms.Timer(Me.components)
    38. Me.TextBox1 = New System.Windows.Forms.TextBox()
    39. Me.Button8 = New System.Windows.Forms.Button()
    40. Me.SuspendLayout()
    41. '
    42. 'Label1
    43. '
    44. Me.Label1.AutoSize = True
    45. Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 48.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    46. Me.Label1.Location = New System.Drawing.Point(253, 69)
    47. Me.Label1.Name = "Label1"
    48. Me.Label1.Size = New System.Drawing.Size(104, 73)
    49. Me.Label1.TabIndex = 0
    50. Me.Label1.Text = "00"
    51. '
    52. 'Label2
    53. '
    54. Me.Label2.AutoSize = True
    55. Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 48.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    56. Me.Label2.Location = New System.Drawing.Point(123, 69)
    57. Me.Label2.Name = "Label2"
    58. Me.Label2.Size = New System.Drawing.Size(104, 73)
    59. Me.Label2.TabIndex = 1
    60. Me.Label2.Text = "00"
    61. '
    62. 'Label3
    63. '
    64. Me.Label3.AutoSize = True
    65. Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 48.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    66. Me.Label3.Location = New System.Drawing.Point(12, 69)
    67. Me.Label3.Name = "Label3"
    68. Me.Label3.Size = New System.Drawing.Size(104, 73)
    69. Me.Label3.TabIndex = 2
    70. Me.Label3.Text = "00"
    71. '
    72. 'Button1
    73. '
    74. Me.Button1.Location = New System.Drawing.Point(45, 191)
    75. Me.Button1.Name = "Button1"
    76. Me.Button1.Size = New System.Drawing.Size(36, 23)
    77. Me.Button1.TabIndex = 3
    78. Me.Button1.Text = "-1"
    79. Me.Button1.UseVisualStyleBackColor = True
    80. '
    81. 'Button2
    82. '
    83. Me.Button2.Location = New System.Drawing.Point(152, 191)
    84. Me.Button2.Name = "Button2"
    85. Me.Button2.Size = New System.Drawing.Size(36, 23)
    86. Me.Button2.TabIndex = 4
    87. Me.Button2.Text = "-1"
    88. Me.Button2.UseVisualStyleBackColor = True
    89. '
    90. 'Button3
    91. '
    92. Me.Button3.Location = New System.Drawing.Point(285, 191)
    93. Me.Button3.Name = "Button3"
    94. Me.Button3.Size = New System.Drawing.Size(36, 23)
    95. Me.Button3.TabIndex = 5
    96. Me.Button3.Text = "-1"
    97. Me.Button3.UseVisualStyleBackColor = True
    98. '
    99. 'Button4
    100. '
    101. Me.Button4.Location = New System.Drawing.Point(285, 12)
    102. Me.Button4.Name = "Button4"
    103. Me.Button4.Size = New System.Drawing.Size(36, 23)
    104. Me.Button4.TabIndex = 8
    105. Me.Button4.Text = "+1"
    106. Me.Button4.UseVisualStyleBackColor = True
    107. '
    108. 'Button5
    109. '
    110. Me.Button5.Location = New System.Drawing.Point(152, 12)
    111. Me.Button5.Name = "Button5"
    112. Me.Button5.Size = New System.Drawing.Size(36, 23)
    113. Me.Button5.TabIndex = 7
    114. Me.Button5.Text = "+1"
    115. Me.Button5.UseVisualStyleBackColor = True
    116. '
    117. 'Button6
    118. '
    119. Me.Button6.Location = New System.Drawing.Point(45, 12)
    120. Me.Button6.Name = "Button6"
    121. Me.Button6.Size = New System.Drawing.Size(36, 23)
    122. Me.Button6.TabIndex = 6
    123. Me.Button6.Text = "+1"
    124. Me.Button6.UseVisualStyleBackColor = True
    125. '
    126. 'CheckBox1
    127. '
    128. Me.CheckBox1.AutoSize = True
    129. Me.CheckBox1.Location = New System.Drawing.Point(132, 233)
    130. Me.CheckBox1.Name = "CheckBox1"
    131. Me.CheckBox1.Size = New System.Drawing.Size(63, 17)
    132. Me.CheckBox1.TabIndex = 9
    133. Me.CheckBox1.Text = "Stopuhr"
    134. Me.CheckBox1.UseVisualStyleBackColor = True
    135. '
    136. 'Button7
    137. '
    138. Me.Button7.Location = New System.Drawing.Point(255, 229)
    139. Me.Button7.Name = "Button7"
    140. Me.Button7.Size = New System.Drawing.Size(75, 23)
    141. Me.Button7.TabIndex = 10
    142. Me.Button7.Text = "Start"
    143. Me.Button7.UseVisualStyleBackColor = True
    144. '
    145. 'CheckBox2
    146. '
    147. Me.CheckBox2.AutoSize = True
    148. Me.CheckBox2.Location = New System.Drawing.Point(45, 233)
    149. Me.CheckBox2.Name = "CheckBox2"
    150. Me.CheckBox2.Size = New System.Drawing.Size(83, 17)
    151. Me.CheckBox2.TabIndex = 11
    152. Me.CheckBox2.Text = "Countdown "
    153. Me.CheckBox2.UseVisualStyleBackColor = True
    154. '
    155. 'Timer1
    156. '
    157. '
    158. 'Label4
    159. '
    160. Me.Label4.AutoSize = True
    161. Me.Label4.Location = New System.Drawing.Point(42, 175)
    162. Me.Label4.Name = "Label4"
    163. Me.Label4.Size = New System.Drawing.Size(39, 13)
    164. Me.Label4.TabIndex = 12
    165. Me.Label4.Text = "Label4"
    166. '
    167. 'Timer2
    168. '
    169. '
    170. 'TextBox1
    171. '
    172. Me.TextBox1.Font = New System.Drawing.Font("Microsoft Sans Serif", 36.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    173. Me.TextBox1.Location = New System.Drawing.Point(100, 69)
    174. Me.TextBox1.Name = "TextBox1"
    175. Me.TextBox1.Size = New System.Drawing.Size(174, 62)
    176. Me.TextBox1.TabIndex = 13
    177. Me.TextBox1.Text = "Finisch"
    178. '
    179. 'Button8
    180. '
    181. Me.Button8.Location = New System.Drawing.Point(194, 229)
    182. Me.Button8.Name = "Button8"
    183. Me.Button8.Size = New System.Drawing.Size(55, 23)
    184. Me.Button8.TabIndex = 14
    185. Me.Button8.Text = "Reset"
    186. Me.Button8.UseVisualStyleBackColor = True
    187. '
    188. 'Form1
    189. '
    190. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    191. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    192. Me.ClientSize = New System.Drawing.Size(369, 262)
    193. Me.Controls.Add(Me.Button8)
    194. Me.Controls.Add(Me.TextBox1)
    195. Me.Controls.Add(Me.Label4)
    196. Me.Controls.Add(Me.CheckBox2)
    197. Me.Controls.Add(Me.Button7)
    198. Me.Controls.Add(Me.CheckBox1)
    199. Me.Controls.Add(Me.Button4)
    200. Me.Controls.Add(Me.Button5)
    201. Me.Controls.Add(Me.Button6)
    202. Me.Controls.Add(Me.Button3)
    203. Me.Controls.Add(Me.Button2)
    204. Me.Controls.Add(Me.Button1)
    205. Me.Controls.Add(Me.Label3)
    206. Me.Controls.Add(Me.Label2)
    207. Me.Controls.Add(Me.Label1)
    208. Me.Name = "Form1"
    209. Me.Text = "Form1"
    210. Me.ResumeLayout(False)
    211. Me.PerformLayout()
    212. End Sub
    213. Friend WithEvents Label1 As System.Windows.Forms.Label
    214. Friend WithEvents Label2 As System.Windows.Forms.Label
    215. Friend WithEvents Label3 As System.Windows.Forms.Label
    216. Friend WithEvents Button1 As System.Windows.Forms.Button
    217. Friend WithEvents Button2 As System.Windows.Forms.Button
    218. Friend WithEvents Button3 As System.Windows.Forms.Button
    219. Friend WithEvents Button4 As System.Windows.Forms.Button
    220. Friend WithEvents Button5 As System.Windows.Forms.Button
    221. Friend WithEvents Button6 As System.Windows.Forms.Button
    222. Friend WithEvents CheckBox1 As System.Windows.Forms.CheckBox
    223. Friend WithEvents Button7 As System.Windows.Forms.Button
    224. Friend WithEvents CheckBox2 As System.Windows.Forms.CheckBox
    225. Friend WithEvents Timer1 As System.Windows.Forms.Timer
    226. Friend WithEvents Label4 As System.Windows.Forms.Label
    227. Friend WithEvents Timer2 As System.Windows.Forms.Timer
    228. Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    229. Friend WithEvents Button8 As System.Windows.Forms.Button
    230. End Class

    reyx datei
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Timer1.Tray Location 17; 17
    2. Timer2.Tray Location 106; 17
    Der Code ist nicht Option Strict On valide.
    Die Typen werden vollkommen ignoriert...

    Falsch:
    Label1.Text = Label1.Text - 1

    Richtig:
    Label1.Text = CStr(CInt(Label1.Text) - 1)

    Zudem würde ich die Rechnerei von der GUI deutlich weiter trennen, denn hier gehen wir davon aus, dass Label1.Text eine Zahl ist.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ () aus folgendem Grund: Farbe ROT entfernt

    oh je... Ich komme mir vor als hätte ich mein ganzes Leben lang hinterm Mond gelebt...
    In SpaceyX Script verstehe ich noch den Großteil ...
    In dem Script von Daniel Baumert verstehe ich nichts und verliere nach einigen Zeilen den kompletten überblick.

    Naja ich habe das Script von SpaceyX zu einem Teil verändert und auch schon fast eingebaut ...
    Werde versuchen Morgen meine Version von dem Script hier in das Forum zu bringen.

    MfG
    K4RTOFF3L
    Gruß K4RTOFF3L

    Das Problem zu erkennen ist wichtiger, als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung. - Albert Einstein
    Im Zweifelsfall immer darauf achten, wie sehr die Person schon hilfreich war. Jemand, der sich hier bewiesen hat, wird eher den sauberen Code schreiben. Vom Rest bloß nicht verwirren lassen, meistens brauchen diese Personen (im schlimmsten Fall) die Hilfe ebenso nötig wie der Fragesteller.
    stimmt du hast recht das hier "Wenn in Label1.Text auch nur ein Zeichen drin ist, das keine Zahl ist, fliegt dir das Programm um die Ohren!!!!! (ein Beispiel für unsaubern Code in deinen Beitrag)" ist eher ein beweis Option Strict ON zu benutzen, weil das da nicht passiert (man soll ja zum Konvertieren Integer.TryParse nehmen)
    Eine kleine frage von mir als Neuling.
    Ist der "Kindergartenkrieg" hier in jedem Beitrag?
    Habe noch nicht so viele gelesen.

    MfG
    K4RTOFF3L
    Gruß K4RTOFF3L

    Das Problem zu erkennen ist wichtiger, als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung. - Albert Einstein