0

VB の初心者で、Web リクエストを 30 秒ごとに更新しようとしていて、タイマーを実装する方法に行き詰まっています。これまでに作成したコードは次のとおりです。正しい解決策に感謝します。

Public Class main

Dim boatid As Integer



Sub googlemaps()
    Dim url As String = "http://www.google.com"
    Me.WebRequest.Navigate(New Uri(url))
    'Implement timer here? (me.refresh)?

End Sub

Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectBoat.ValueChanged
    boatid = SelectBoat.Value

    SelectBoat.Maximum = 10
    SelectBoat.Minimum = 1

    Lbboatid.Text = boatid
End Sub

Private Sub btnsequence_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsequence.Click
    Dim i As Integer
    boatid = i

End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RefreshTimer.Tick
    RefreshTimer.Enabled = True
    RefreshTimer.Interval = 30000
End Sub

Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Datetime.Text = Now.ToString

    googlemaps()
End Sub

クラス終了

4

1 に答える 1

1

一定期間ごとに実行しなければならないメソッドも Timer1_Tickイベントに配置する必要があります。これは小さな実装です。試してみて、それに応じてコードを適応させて機能するかどうかを確認してください。

必要なタイマープロパティを設定します。

デザインビューとそのプロパティボックスリストセットのタイマーをクリックします。

  • 30000のIntervalプロパティ(イベントは30秒ごとに発生します)
  • Trueで有効(フォームが読み込まれた後、タイマーが機能し始めます)

次に、Codebehindで

private void ShowMessage() 
{           
  MessageBox.Show("Hello Timer");
}

private void timer1_Tick(object sender, EventArgs e)
{
  ShowMessage();
}

また、これはあなたが投稿したコードに応じた実用的な実装です。あなたのコードから私が理解していることは、ブラウザを特定の秒ごとに更新することと、数値の上下のコントロールがboatIdに設定された変数の値を表示することです。このコードはそれを行います:

数値の上下のコントロールの最小プロパティと最大プロパティを[プロパティ]ボックスで設定します(デザインビューでコントロールを右クリックして、これら2つのプロパティを検索します)

次に、次のことを試してください。

Public boatid As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.lblDate.Text = Now.ToString()
    ''Set a bigger winform to show the browser page better
    Me.Width = 800
    Me.Height = 600
    googlemaps()
End Sub

''The browser will be refreshed every n seconds) according to what you have set on interval property of the timer control
Sub googlemaps()
    Dim url As String = "http://www.google.com"
    Me.WebBrowser1.Navigate(New Uri(url))
End Sub

''Loop over this method using the Tick event, while doing that verify the value 
''of the boatid variable and if its less than the maximun value allowed by the numeric
''updown control increment it in one unit, then show it on the numeric selected value
''as well on the label control
Private Sub ChangeBoatIdValueCycling()

    If boatid < 10 Then
        boatid += 1
    Else
        boatid = 1
    End If

    Me.NumericUpDown1.Value = boatid
    Me.lblBoatId.Text = boatid.ToString()

End Sub

''This wil show the id on the label text when you click up and down the numeric control
Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Me.lblBoatId.Text = Me.NumericUpDown1.Value.ToString()
End Sub

''This will set a variable with value 5 that will get shown selected on the numeric
''control as well as visible on the label text, the value will be shown because 
''it exists in the range of 1 to 10 that is your requeriment.
Private Sub btnsequence_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsequence.Click
    Dim i As Integer = 5
    boatid = i
    Me.NumericUpDown1.Value = boatid
    Me.lblBoatId.Text = boatid.ToString()
End Sub

''Needed to repeat the form refresh and boatid cycling every n seconds according to  your Interval property
''value
Private Sub RefreshTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RefreshTimer.Tick
    googlemaps()
    ChangeBoatIdValueCycling()
End Sub

お役に立てば幸いです。どうなるか教えてください。

于 2013-02-28T17:42:45.600 に答える