ここから本文です

Timerイベントが作動しなくて非常に困っています。 自分はWindows 10 Homeを...

tok********さん

2019/3/3112:43:38

Timerイベントが作動しなくて非常に困っています。


自分はWindows 10 Homeを使ってVisual Studio 2017を動かしています。

使っている言語はvisual basic 2017です。
そこで問題が発生しました。『文章を右から左にスクロールさせ、ボタンをクリックするとスクロールする速度が上下する』というプログラムを組み、右から左へのスクロールはできました。しかし、ボタンをクリックしてもスクロールの速度が変わらず、一定の速度のままでしかスクロールしません。
以下に、構文を記載いたします。


Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
With Label1
If (.Left + .Width) >= 0 Then
.Left -= 10
Else
.Left += .Width
End If

End With

End Sub


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Timer1.Enabled = True
Me._Timer1.Start()

If Label6.Text = "1" Then
Me._Timer1.Interval = 39.05
ElseIf Label6.Text = "2" Then
Me._Timer1.Interval = 21.77
ElseIf Label6.Text = "3" Then
Me._Timer1.Interval = 18.58
ElseIf Label6.Text = "4" Then
Me._Timer1.Interval = 15.51
ElseIf Label6.Text = "5" Then
Me._Timer1.Interval = 15.5
ElseIf Label6.Text = "6" Then
Me._Timer1.Interval = 11.18
ElseIf Label6.Text = "7" Then
Me._Timer1.Interval = 10.06
End If
End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
If Label6.Text = "7" Then
Label6.Text = "6"
Me._Timer1.Interval = 11.18
ElseIf Label6.Text = "6" Then
Label6.Text = "5"
Me._Timer1.Interval = 15.5
ElseIf Label6.Text = "5" Then
Label6.Text = "4"
Me._Timer1.Interval = 15.51
ElseIf Label6.Text = "4" Then
Label6.Text = "3"
Me._Timer1.Interval = 18.58
ElseIf Label6.Text = "3" Then
Label6.Text = "2"
Me._Timer1.Interval = 21.77
ElseIf Label6.Text = "2" Then
Label6.Text = "1"
Me._Timer1.Interval = 39.05


End If
End Sub

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
If Label6.Text = "1" Then
Label6.Text = "2"
Me._Timer1.Interval = 21.77
ElseIf Label6.Text = "2" Then
Label6.Text = "3"
Me._Timer1.Interval = 18.58
ElseIf Label6.Text = "3" Then
Label6.Text = "4"
Me._Timer1.Interval = 15.51
ElseIf Label6.Text = "4" Then
Label6.Text = "5"
Me._Timer1.Interval = 15.5
ElseIf Label6.Text = "5" Then
Label6.Text = "6"
Me._Timer1.Interval = 11.18
ElseIf Label6.Text = "6" Then
Label6.Text = "7"
Me._Timer1.Interval = 10.06

End If
End Sub

以上

Button5でスクロールの速度を遅くし、Button6で速くするという構文ですが、それでもTimerイベントが作動しません。

どなたか改善案を教えてください。何卒よろしくお願い申し上げます。

補足補足いたします。

このアプリケーションでは、ボタンをクリックすると文章を変更できるようになっています。

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim a() As String = New String(){"ありがとうございます", "ごめんなさい", "おはようございます"}
Randomize()
Label1.Text = a(Math.Floor(3 * Rnd()))

確認してみたところ、このボタンをクリックした後にTimerイベントを発生させるとスクロールの速さが変わらなくなりました。

閲覧数:
71
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

liv********さん

2019/3/3115:06:26

推測だけど、Label6.Text が ( "1" から "7" ) 以外になってるからじゃないかなぁ・・・

Button5_Click の

If Label6.Text = "7" Then

の行とか

Button6_Click の

If Label6.Text = "1" Then

の行にブレークポイントを設定してデバッグ実行して、
Label6.Text の内容を確認してみることをお勧めするね。

  • 質問者

    tok********さん

    2019/3/3115:26:35

    早速のご返答ありがとうございます。

    Label6のtextは"1"から"7"まで異常なく変化できていました。
    重ね重ね申し訳ございませんが、補足をいたしましたのでどうかご覧ください。何卒よろしくお願い申し上げます

  • その他の返信(3件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

sap********さん

2019/4/118:35:36

System.Windows.Forms.TimerコントロールのIntervalは55 ミリ秒の精度に制限されます。
なので、55 ミリ秒より小さい値を設定しても、Tickイベントは55 ミリ秒で発生していると思われます。
試しにIntervalの値を10倍にしてゆっくり動かしてみてはどうでしょう。

より短い間隔で処理を行いたい場合は、System.Timers.Timer が良いでしょう。(それでも16ミリ秒以上)
https://moewe-net.com/csharp/timers-timer

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる