虽然不想,但是活得干,所以还得啊,C#在大学的时候自学过一段时间,算是初学者吧,但已有一年时间没怎么碰过,现在修改实验室里的软件,需要在winform中对本地网页文
件进行操作,但我想无论是本地还是网站上的文件其原理都是一样一样的吧。好了废话不多说,现说下问题,
1.winform加载一个本地网页文件,类似于网上答题,那种,里面有输入控件,但是是用HTML语言写成,与C#无关,现在由于需要如果用户点击了题中的一个单选按钮,则在
winform中进行某种操作成功代码如下
HtmlElement cur = (HtmlElement)sender; HtmlDocument htmlDoc = this.browser.Document; if(cur.Id=="img_q4") { //点击了问题4 mshtml.IHTMLInputElement question2 = (mshtml.IHTMLInputElement)htmlDoc.GetElementById("q2_2").DomElement; mshtml.HTMLInputElement question3 = (mshtml.HTMLInputElement)htmlDoc.GetElementById("q3_2").DomElement; if (question2.@checked && question3.@checked) { MessageBox.Show("同时被选中", "提示"); } }
如果要进行上面的操作,需要注意的是要引用mshtml.dll文件,由于我是第一次处理C# winfor和html,所以有诸多问题不是很清楚,例如radio的check属性,仅仅靠
htmlDoc.getElementById是没有办法得到的所以要使用IHTMLInputElement,这是mshtml.dll文件中的,然后需要做的操作,便是将IHTMLInputElement对象与网页中的具体实例
进行绑定,
mshtml.IHTMLInputElement question2 = (mshtml.IHTMLInputElement)htmlDoc.GetElementById("q2_2").DomElement;
有两个地方需要注意:
一是mshtml.IHTMLInputElement中的mshtml不能去掉,必须使用mshtml命名空间
二是一般而言我们在使用了GetElementById就能得到网页元素,但是在进行互操作时,这样是不行的,他会提示
错误 4 Cannot convert type 'System.Windows.Forms.HtmlElement' to 'mshtml.IHTMLInputElement,所以必须加入DomElement;
好了,关于C#今天就到这了。