2013-02-28 2 views
0

Hé im quelque chose de nouveau à VB et j'essaie d'obtenir une requête web pour actualiser toutes les 30 secondes, et je suis resté bloqué sur la façon d'implémenter un minuteur dedans. Voici le code que je l'ai produit jusqu'à présent, je vous serais reconnaissant de la bonne solution:VB.NET 2010 Web Request Refresh

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 

End Class

Répondre

1

La méthode qui doit être exécuté chaque période de temps devrait être mis sur la Timer1_Tick événement aussi bien. Ceci est une petite implémentation essayer et voir si cela fonctionne adapter votre code en conséquence:

Configurez les propriétés de minuterie souhaitées:

Cliquez sur la minuterie sur la vue de la conception et sur la zone de liste Propriétés de l'ensemble:

  • propriété Intervalle sur 30000 (L'événement se déclenche toutes les 30 secondes)
  • activé sur True (La minuterie commencera à travailler après votre formulaire est chargé)

ensuite sur votre Codebehind

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

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

également ici est une implémentation fonctionnelle selon le code affiché, comme pour ce que je comprends de votre code que vous voulez que le navigateur pour rafraîchir toutes les certaines secondes, ainsi que le numérique vers le haut et le contrôle vers le bas montrent la valeur de la variable définie sur boatId, ce code fait cela:

Définissez les propriétés minimum et maximum de votre contrôle ascendant numérique dans la boîte Propriétés de celui-ci (clic droit sur le contrôle en mode design et recherchez ces deux propriétés)

Ensuite, essayez ce qui suit;

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 

J'espère que cela aide. Dites-moi comment ça se passe.

+0

Oui, ça a très bien fonctionné. L'autre problème que j'ai est que je veux que le bouton de séquence ajuste la valeur de boatid de 1 à 9 toutes les 30 secondes et cycle. Ainsi que l'utilisateur ayant la possibilité de changer l'ID du bateau avec le retrait numérique. – mdcuk

+0

Vérifiez la mise à jour @ mdcuk, si vous ne comprenez rien, faites le moi savoir. Continuez à coder, à lire et à apprendre. Merci. – CoderRoller

+0

Salut @ mdcuk, ce qui est arrivé avec la réponse. Cela n'a-t-il pas marché? – CoderRoller