我的WinForms浏览器控件有3个上下文菜单。
BrowserImages,BrowserLinks和BrowserDefault。
右键单击文档的空白区域时,将加载默认值
上
右键单击链接时显示链接
当(您猜到了)右键单击图像时,将显示“图像”。
触发DocumentCompleted时,我添加Document_ContextMenuShowing事件-该代码为:
/// <summary>
/// Displays the Correct Context Menu for the element that is being right clicked on
/// </summary>
/// <param name="sender">
/// HTMLDocument: The content of the web browser when the right click was detected.
/// </param>
/// <param name="e">
/// HtmlElementEventArgs: Used for getting the location of the mouse so we know where to display the Context Menu
/// </param>
void Document_ContextMenuShowing(object sender, HtmlElementEventArgs e)
{
var res = (HtmlDocument)sender;
if (res.ActiveElement.InnerHtml.ToLowerInvariant().Contains("img"))
{
cmsBrowserImages.Show(e.ClientMousePosition.X, e.ClientMousePosition.Y);
}
else if (res.ActiveElement.InnerHtml.ToLowerInvariant().Contains("href"))
{
cmsBrowserLinks.Show(e.ClientMousePosition.X, e.ClientMousePosition.Y);
}
else
{
cmsBrowserDefault.Show(e.ClientMousePosition.X, e.ClientMousePosition.Y);
}
}
有没有更好,更健壮(更好地工作)的方式来做到这一点?
首选C#代码,但VB.Net可以使用,易于重写。
谢谢
最佳答案
我会使用document.elementFromPoint而不是依赖document.activeElement
。
关于c# - WinForm浏览器控件右键单击了哪个元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19311204/