c# - 从 WebBrowser 控件中加载的文档中获取标题

标签 c# wpf xaml

我有一个文本 block 和一个网络浏览器控件。我有一个问题,例如,我的网络浏览器导航到 google.com。当网络浏览器导航到 google.com 时,我希望文本 block 将标题更改为 google.com。

请帮助我使用 C# 实现这一目标。

最佳答案

用 IE 测试

XAML:

<Grid>
    <WebBrowser LoadCompleted="webBrowser1_LoadCompleted" Height="100" HorizontalAlignment="Left" Margin="73,72,0,0" Name="webBrowser1" VerticalAlignment="Top" Width="200" />
    <Button Content="Go" Click="Button_Click" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
</Grid>

代码:

private void webBrowser1_LoadCompleted(object sender, NavigationEventArgs e)
{
    dynamic doc = webBrowser1.Document;
    this.Title = doc.Title;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    webBrowser1.Navigate("http://google.com");
}

没有 dynamic 并且几乎没有任何异常处理:

private void webBrowser1_LoadCompleted(object sender, NavigationEventArgs e)
{
    Object doc = webBrowser1.Document;
    this.Title = GetPropertyValue<string>(doc, "Title");
}

private T GetPropertyValue<T>(object obj, string propertyName)
{
    Type objectType = obj.GetType(); 
    PropertyInfo propertyInfo = objectType.GetProperty(propertyName);
    Type propertyType = propertyInfo.PropertyType;
    if(propertyType == typeof(T))
    {
        object propertyValue = (T)info.GetValue(obj, null);   
        return value;
    }
    else
    {
        throw new Exception("Property " + propertyName + " is not of type " + T);
    }
}

关于c# - 从 WebBrowser 控件中加载的文档中获取标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5548933/

相关文章:

c# - 当 ContentControl.Content 改变时开始动画

c# - 如何通过 WebMethod 确定当前用户的身份验证状态

c# - 如何在 C# XML 摘要中显示泛型类型

c# - Windows 控件可以与 WPF 一起使用吗?

c# - WPF 数据变化动画

wpf - 如何创建自动滚动文本框

c# - 从常规注释生成 XML 注释

c# - 通过另一个条件更改 LINQ 中的条件

c# - WPF 资源加载在 LoadFrom 加载上下文中失败

c# - 仅更改所选项目的 TabBar 文本颜色(Xamarin.Forms iOS)