gpt4 book ai didi

C#:如何从 WebBrowser 元素获取文档标题?

转载 作者:太空狗 更新时间:2023-10-29 23:11:17 24 4
gpt4 key购买 nike

我在尝试从 C# 中的 WebBrowser 获取文档标题时遇到问题。它在 VB.NET 中运行良好,但在 C# 中无法提供任何属性。

当我输入 MyBrowser.Document. 时,我得到的唯一选项是 4 个方法:Equals、GetHashCode、GetType 和 ToString - 没有属性。

我认为这是因为我必须先将文档分配给一个新的实例,但是我找不到 VB.NET 中存在的 HTMLDocument 类。

基本上我想要做的是在每次 WebBrowser 加载/重新加载页面时返回 Document.Title。

有人可以帮忙吗?将不胜感激!

这是我目前的代码...

private void Link_Click(object sender, RoutedEventArgs e)
{
WebBrowser tempBrowser = new WebBrowser();
tempBrowser.HorizontalAlignment = HorizontalAlignment.Left;
tempBrowser.Margin = new Thickness(-4, -4, -4, -4);
tempBrowser.Name = "MyBrowser";
tempBrowser.VerticalAlignment = VerticalAlignment.Top;
tempBrowser.LoadCompleted += new System.Windows.Navigation.LoadCompletedEventHandler(tempBrowser_LoadCompleted);

tempTab.Content = tempBrowser; // this is just a TabControl that contains the WebBrowser

Uri tempURI = new Uri("http://www.google.com");
tempBrowser.Navigate(tempURI);
}

private void tempBrowser_LoadCompleted(object sender, EventArgs e)
{
if (sender is WebBrowser)
{
MessageBox.Show("Test");
currentBrowser = (WebBrowser)sender;
System.Windows.Forms.HtmlDocument tempDoc = (System.Windows.Forms.HtmlDocument)currentBrowser.Document;
MessageBox.Show(tempDoc.Title);
}
}

此代码没有给我任何错误,但我从未看到第二个 MessageBox。不过我确实看到了第一个(“测试”消息),所以程序正在进入该代码块。

最佳答案

添加对 Microsoft.mshtml 的引用

为 LoadCompleted 添加事件接收器

webbrowser.LoadCompleted += new LoadCompletedEventHandler(webbrowser_LoadCompleted);

那么您将不会遇到未加载文档以读取值的问题

    void webbrowser_LoadCompleted(object sender, NavigationEventArgs e)
{
// Get the document title and display it
if (webbrowser.Document != null)
{
mshtml.IHTMLDocument2 doc = webbrowser.Document as mshtml.IHTMLDocument2;
Informative.Text = doc.title;
}
}

关于C#:如何从 WebBrowser 元素获取文档标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3238809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com