计时器刻度线无法正常运行 [英] timer tick not functioning properly

查看:71
本文介绍了计时器刻度线无法正常运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在vb.net中制作一个免费的Microsoft word 插件.它会自动填写网络表单.该插件的主要问题是,它使用Web浏览器控件,并且一旦填写了表单,就需要导航另一个表单.表单只有在完全加载后才能填写.

所以我的方法是
1.加载表单时导航到第一个站点

i was trying to make a free microsoft word plugin in vb.net. It automatically fills a web form. The main problem with the plugin is that it uses web browser control and once it has filled a form it will need to navigate another form. The form can only be filled once it has completely been loaded.

so my approach is
1. navigate to first site when form loads

<big>Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       WebBrowser1.Navigate("http://google.com")
   End Sub</big>



2.使用整数i并使用if语句检查要填写的表格:



2. use an integer i and use if statements to check which form to fill :

<big>Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        If (i = 1) Then
            WebBrowser1.Document.GetElementById("username").SetAttribute("value", "elvin")
            WebBrowser1.Document.GetElementById("password").SetAttribute("value", "1111111")
            WebBrowser1.Document.GetElementById("wpt").InvokeMember("click")
            i = 2
        ElseIf (i = 2) Then
            WebBrowser1.Document.GetElementById("title").SetAttribute("value", "elvin")
            WebBrowser1.Document.GetElementById("content").SetAttribute("value", "111111")
            WebBrowser1.Document.GetElementById("tags").SetAttribute("value", "fgddferre")
            WebBrowser1.Document.GetElementById("publish").InvokeMember("click")
            i = 3
            Timer1.Start()
        ElseIf (i = 3) Then
            Timer1.Stop()
            WebBrowser1.Document.GetElementById("loginTextBlock_uname").SetAttribute("value", "elvin")
            WebBrowser1.Document.GetElementById("loginTextBlock").SetAttribute("value", "11111")
            WebBrowser1.Document.GetElementById("nowwhat").InvokeMember("click")
            i = 4
        ElseIf (i = 4) Then
            WebBrowser1.Document.GetElementById("title").SetAttribute("value", "elvin")
            WebBrowser1.Document.GetElementById("content").SetAttribute("value", "11111")
            WebBrowser1.Document.GetElementById("tags").SetAttribute("value", "fghfghfgh")
            WebBrowser1.Document.GetElementById("publish").InvokeMember("click")
            i = 5
            Timer1.Start()
        ElseIf (i = 5) Then
            WebBrowser1.Document.GetElementById("user").SetAttribute("value", "rfgjhfhj")
            WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "566788989")
            WebBrowser1.Document.GetElementById("wpt").InvokeMember("click")
            i = 6
        End If
    End Sub
</big>




3.这是主要步骤.您会看到加载主表单时,i = 1,因此浏览器转到google.com(第一个表单),当表单完全加载时,它会检查i的值.由于我= 1,它填补了谷歌.填写并继续后,i = 2,浏览器转到我的个人帐户页面.这意味着浏览器会再次加载文档.现在i = 2,因此填补了我的个人遗留物.现在计时器开始计时.由于i = 3,浏览器导航到第二个站点并填写详细信息.




3. this is the main step. you see when main form loads, i=1 so browser goes to google.com (first form), when form is completely loaded, itchecks for value of i. Since i=1, it fills google. After filling and continuing i=2 and browser goes to my personal account page. This means browser again loads the document. Now i=2, so it fills my personal detalis. Now the timer starts. Since i=3, browser navigates to second site and fills the details.

<big> Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If (i = 3) Then
            WebBrowser1.Navigate("http://blogger.com")
        ElseIf (i = 5) Then
            WebBrowser1.Navigate("http://www.yahoo.com/")
        End If
    End Sub</big>



现在出现了问题.浏览器不会转到第三个站点.一旦计时器停止并启动,下面的代码就不会转到elseif部分(即i = 5),为什么会这样?



now the problem arises. The browser does not go to the third site. Once the timer has been stopped and started, the following code does not goto the elseif part (i.e. i=5) why is that so?

推荐答案

您要尝试什么去做?这永远不会像计时器一样在表单加载时触发

看看此计时器示例计时器示例^
what are you trying to do? this will never act like a timer it ons fires on form load

have a look at this example for timers Timer Example^


在第二个Timer1.Start()上设置一个断点.查看它是否甚至进入ElseIf (i = 4) Then块内.

为什么还要使用计时器?我认为您可以带走计时器,执行点击,然后在回发完成后添加另一步骤来重定向:
Set a breakpoint on the second Timer1.Start(). See if it even gets inside the ElseIf (i = 4) Then block.

Why even use a timer? I think you could just take the timer out, perform the click, and when the postback finishes add another step to redirect:
Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    If (i = 1) Then
        WebBrowser1.Document.GetElementById("username").SetAttribute("value", "elvin")
        WebBrowser1.Document.GetElementById("password").SetAttribute("value", "1111111")
        WebBrowser1.Document.GetElementById("wpt").InvokeMember("click")
        i = 2
    ElseIf (i = 2) Then
        WebBrowser1.Document.GetElementById("title").SetAttribute("value", "elvin")
        WebBrowser1.Document.GetElementById("content").SetAttribute("value", "111111")
        WebBrowser1.Document.GetElementById("tags").SetAttribute("value", "fgddferre")
        WebBrowser1.Document.GetElementById("publish").InvokeMember("click")
        i = 3
    ElseIf (i = 3) Then
        WebBrowser1.Navigate("http://blogger.com")
        i = 4
    ElseIf (i = 4) Then
        WebBrowser1.Document.GetElementById("loginTextBlock_uname").SetAttribute("value", "elvin")
        WebBrowser1.Document.GetElementById("loginTextBlock").SetAttribute("value", "11111")
        WebBrowser1.Document.GetElementById("nowwhat").InvokeMember("click")
        i = 5
    ElseIf (i = 5) Then
        WebBrowser1.Document.GetElementById("title").SetAttribute("value", "elvin")
        WebBrowser1.Document.GetElementById("content").SetAttribute("value", "11111")
        WebBrowser1.Document.GetElementById("tags").SetAttribute("value", "fghfghfgh")
        WebBrowser1.Document.GetElementById("publish").InvokeMember("click")
        i = 6
    ElseIf (i = 6) Then
        WebBrowser1.Navigate("http://www.yahoo.com/")
        i = 7
    ElseIf (i = 7) Then
        WebBrowser1.Document.GetElementById("user").SetAttribute("value", "rfgjhfhj")
        WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "566788989")
        WebBrowser1.Document.GetElementById("wpt").InvokeMember("click")
        i = 8
    End If
End Sub


这篇关于计时器刻度线无法正常运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆