首页 新闻 会员 周边

关于WINFORM button-click事件自动处理

0
悬赏园豆:10 [待解决问题]

现在我有个winform程序,是自动登陆我们学校网站,然后有3个事件,分别是登陆,然后点击查询成绩,最后是查询具体成绩,如何将这3个事件按顺序自动执行(不用我手动点击),附上源代码,最主要还是搞不懂,希望得到大家的帮助

 1         //事件1
 2         private void btnLogin_Click(object sender, EventArgs e)
 3         {
 4             Login();
 5 
 6         }
 7         //事件2
 8         private void btnClose_Click(object sender, EventArgs e)
 9         {
10             //this.Close();
11             chaXun();
12         }
13         //事件3
14         private void button1_Click(object sender, EventArgs e)
15         {
16             HtmlDocument frame = wbLogin.Document.Window.Frames["iframeautoheight"].Document;
17             frame.GetElementById("btn_zcj").InvokeMember("click");
18         }
19         private void Login()
20         {
21             string username = txtUserName.Text;
22             string pwd = txtPwd.Text;
23             string strResponse="";
24             if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(pwd))
25             {
26                 MessageBox.Show("用户名或者密码不能为空");
27             }
28             else
29             {
30                 HtmlDocument doc = this.wbLogin.Document;
31                 doc.All["TextBox1"].SetAttribute("Value", username);
32                 doc.All["TextBox2"].SetAttribute("Value", pwd);
33                 doc.All["Button1"].InvokeMember("click");
34                 this.wbLogin.AllowNavigation = true;
35                 if(wbLogin.ReadyState==WebBrowserReadyState.Complete)
36                 {
37                     string url = wbLogin.Url.AbsoluteUri;
38                 }
39             }
40         }
41 
42         private void chaXun()
43         {
44             HtmlDocument doc = this.wbLogin.Document;
45             doc.InvokeScript("GetMc", new string[] { "查询成绩" });
46            HtmlElementCollection a= doc.GetElementsByTagName("a");
47            a[10].InvokeMember("click");
48         }
xhhha123的主页 xhhha123 | 菜鸟二级 | 园豆:202
提问于:2013-09-26 12:21
< >
分享
所有回答(4)
0

既然要自动执行 就不应该放在单击事件里嘛

x.y. | 园豆:226 (菜鸟二级) | 2013-09-26 12:32

但是如果放在同一个方法里面,执行了Login();之后,再执行事件2的chaXun();HtmlDocument doc = this.wbLogin.Document;还是事件1的document,但是实际上事件2是登陆成功之后的页面,自然document里面的元素也不同,所以我想问问WebBrowser,还有什么方法可以取得登陆成功后跳转的页面的dom

支持(0) 反对(0) xhhha123 | 园豆:202 (菜鸟二级) | 2013-09-26 12:54
0

可以动态注册事件 可以试试多播委托    click+=事件1  click+=事件2.....

wolfy | 园豆:2636 (老鸟四级) | 2013-09-26 13:07

好,请问具体代码怎么写呢,就是我源代码里面,写出来就OK了

支持(0) 反对(0) xhhha123 | 园豆:202 (菜鸟二级) | 2013-09-26 13:09

@xhhha123: 你可以参考这两篇文章 希望能帮到你:http://www.cnblogs.com/wolf-sun/p/3293150.html

http://www.cnblogs.com/wolf-sun/p/3293146.html

支持(0) 反对(0) wolfy | 园豆:2636 (老鸟四级) | 2013-09-26 13:22

@wolfy: 好的,我马上上去看看

支持(0) 反对(0) xhhha123 | 园豆:202 (菜鸟二级) | 2013-09-26 22:58
0

1、休息一会执行,Threed.Sleep(5000);

2、Login之后,先调用WebBrowser.Navigate(...),再执行chaxun;

3、换用HttpRequest来实现。

幻天芒 | 园豆:37175 (高人七级) | 2013-09-26 13:17
0

 click+=事件1:你写到+=以后会出现提示,按tab键就可以了

星缘灬孤单 | 园豆:218 (菜鸟二级) | 2013-09-26 13:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册