以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 右键获取控件坐标无果 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=91020) |
-- 作者:ztmdnzc -- 发布时间:2016/9/27 20:20:00 -- 右键获取控件坐标无果 c# winform WebBrower 控件中右键获取控件坐标 void Document_MouseDown(object sender, HtmlElementEventArgs e) HtmlElement ele = webBrowser1.Document.GetElementFromPoint(e.MousePosition);
1.把上述代码转成如下代码后,测试无反映 \'\'\'\'获取鼠标事件 Dim webm As System.Windows.Forms.WebBrowser = sender \'把触发该事件的Sender转换为WebBrowser 2.在窗口afterload事件中设置如下代码时总提示web_Document_MouseDown未声明 AddHandler web.Document.MouseDown,addressof web_Document_MouseDown \'鼠标事件 麻烦老师看看毛病处在哪里?谢谢! |
-- 作者:有点蓝 -- 发布时间:2016/9/27 20:27:00 -- 以下代码放到全局代码中 Public Sub web_Document_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.HtmlElementEventArgs) Dim webm As System.Windows.Forms.WebBrowser = sender \'把触发该事件的Sender转换为WebBrowser If e.MouseButtonsPressed = MouseButtons.Right Then \'如果按键是右键 \'Console.WriteLine(e.MousePosition) MessageBox.Show(e.MousePosition.x,e.MousePosition.y) \'Else If e.MouseButtonsPressed <> MouseButtons.Left \'\'如果按键不是左键 If webm.Document.GetElementFromPoint(e.MousePosition) IsNot Nothing Then \'如果该点位内容不为空 MessageBox.Show((webm.Document.GetElementFromPoint(e.MousePosition)).GetAttribute("href")) \'显示网址 \'Console.WriteLine(webm.Document.GetElementFromPoint(e.MousePosition).GetAttribute("href") End If End If |
-- 作者:ztmdnzc -- 发布时间:2016/9/27 21:44:00 -- 蓝老师:就是放到全局代码不起作用,且出现2的问题,才发帖请教的。 |
-- 作者:有点蓝 -- 发布时间:2016/9/27 22:03:00 -- 汗,到vs看了一下,WebBrower 控件没有Document.MouseDown事件。这个应该是别人自己继承扩展的 |
-- 作者:ztmdnzc -- 发布时间:2016/9/27 22:12:00 -- 蓝老师有没有其他方法可以实现上述功能呢? |
-- 作者:有点蓝 -- 发布时间:2016/9/27 22:37:00 -- 我错了,可以的 全局代码 Public Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Dim Doc As System.Windows.Forms.HtmlDocument = sender.Document AddHandler Doc.MouseDown, AddressOf Document_MouseDown End Sub Public Sub Document_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.HtmlElementEventArgs) Dim doc As System.Windows.Forms.HtmlDocument = sender \'把触发该事件的Sender转换为WebBrowser If e.MouseButtonsPressed = MouseButtons.Right Then \'如果按键是右键 \'Console.WriteLine(e.MousePosition) MessageBox.Show(e.MousePosition.x,e.MousePosition.y) \'Else If e.MouseButtonsPressed <> MouseButtons.Left \'\'如果按键不是左键 If Doc.GetElementFromPoint(e.MousePosition) IsNot Nothing Then \'如果该点位内容不为空 MessageBox.Show((Doc.GetElementFromPoint(e.MousePosition)).GetAttribute("href")) \'显示网址 \'Console.WriteLine(webm.Document.GetElementFromPoint(e.MousePosition).GetAttribute("href") End If End If End Sub 窗口afterload Dim web As System.Windows.Forms.WebBrowser = e.Form.Controls("WebBrowser1").basecontrol AddHandler web.DocumentCompleted, AddressOf WebBrowser1_DocumentCompleted [此贴子已经被作者于2016/9/27 22:44:25编辑过]
|
-- 作者:ztmdnzc -- 发布时间:2016/9/28 19:17:00 -- 谢谢蓝老师百忙之中解答。 |
-- 作者:ztmdnzc -- 发布时间:2016/9/29 19:50:00 -- 蓝老师:再请教个问题,如果点击左键,不打开网址,代码该怎么设置?我用e.cancel=true出错,提示cancel不是htmlelement成员。 |
-- 作者:有点蓝 -- 发布时间:2016/9/29 21:13:00 -- 只能禁止打开新窗口 全局代码 Public cancelBrowse As Boolean Public Sub WebBrowser1_Navigating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) e.Cancel = cancelBrowse End Sub Public Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) e.Cancel = cancelBrowse End Sub 窗口afterlaod Dim web As System.Windows.Forms.WebBrowser = e.Form.Controls("WebBrowser1").basecontrol AddHandler web.Navigating, AddressOf WebBrowser1_Navigating AddHandler web.NewWindow, AddressOf WebBrowser1_NewWindow cancelBrowse = True |