如何在 wpf Webbrowser 控件中查找 INPUT 元素
How to find INPUT element in wpf Webbrowser control
我正在尝试构建一个应用程序,在我的网络浏览器控件中的每个 INPUT 字段上使用 tabtip。但我最近切换到 WPF 并在我使用的旧 WinForms 代码中
HtmlElement element = Browser.Document.GetElementFromPoint(e.ClientMousePosition)
在我的新代码中,我使用点击事件来确定我尝试打开 tabtip 的时间,但它只需要在点击的元素是 INPUT 字段时发生。我的代码:
public static void webBrowser1_LoadCompleted(object sender, NavigationEventArgs e, WebBrowser browser)
{
mshtml.HTMLDocument doc;
doc = (mshtml.HTMLDocument)browser.Document;
mshtml.HTMLDocumentEvents2_Event iEvent;
iEvent = (mshtml.HTMLDocumentEvents2_Event)doc;
iEvent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);
}
这是我要检查点击的元素是否为输入的地方:
private static bool ClickEventHandler(mshtml.IHTMLEventObj e)
{
MessageBox.Show("Item Clicked"); //if(HtmlElement == INPUT) like scenario here
return true;
}
我使用了 this 来源,但我很难理解他们的话,因为我试图用 xaml 和 c# 处理所有事情。
试试这个:
private static bool ClickEventHandler(mshtml.IHTMLEventObj e)
{
mshtml.IHTMLInputElement inputElement = e.srcElement as mshtml.IHTMLInputElement;
if (inputElement != null)
{
MessageBox.Show("<input> clicked");
}
return true;
}
我正在尝试构建一个应用程序,在我的网络浏览器控件中的每个 INPUT 字段上使用 tabtip。但我最近切换到 WPF 并在我使用的旧 WinForms 代码中
HtmlElement element = Browser.Document.GetElementFromPoint(e.ClientMousePosition)
在我的新代码中,我使用点击事件来确定我尝试打开 tabtip 的时间,但它只需要在点击的元素是 INPUT 字段时发生。我的代码:
public static void webBrowser1_LoadCompleted(object sender, NavigationEventArgs e, WebBrowser browser)
{
mshtml.HTMLDocument doc;
doc = (mshtml.HTMLDocument)browser.Document;
mshtml.HTMLDocumentEvents2_Event iEvent;
iEvent = (mshtml.HTMLDocumentEvents2_Event)doc;
iEvent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickEventHandler);
}
这是我要检查点击的元素是否为输入的地方:
private static bool ClickEventHandler(mshtml.IHTMLEventObj e)
{
MessageBox.Show("Item Clicked"); //if(HtmlElement == INPUT) like scenario here
return true;
}
我使用了 this 来源,但我很难理解他们的话,因为我试图用 xaml 和 c# 处理所有事情。
试试这个:
private static bool ClickEventHandler(mshtml.IHTMLEventObj e)
{
mshtml.IHTMLInputElement inputElement = e.srcElement as mshtml.IHTMLInputElement;
if (inputElement != null)
{
MessageBox.Show("<input> clicked");
}
return true;
}