首页 > 解决方案 > WebBrowser.Source.AbsuloteUri 返回null,但我初始化了源

问题描述

我有一个简单的窗口,比如说,两个控件:WebBrowser 和 TextBox。

<TextBox Name="uriTextBox"/>
<WebBrowser Name="webPageWebBrowser"/>

以及带有构造函数的 MainWindow.xaml.cs:

public MainWindow()
    {
        InitializeComponent();
        webPageWebBrowser.Source = new Uri("https://google.com");
        uriTextBox.Text = webPageWebBrowser.Source.AbsoluteUri;
    }

所以,webPageWebBrowser.Source 抛出异常:

System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Windows.Controls.WebBrowser.Source.get returned null.

我应该怎么办?

标签: c#wpfuser-interfaceurinullreferenceexception

解决方案


加载后尝试访问源

public MainWindow()
    {
        InitializeComponent();
        webPageWebBrowser.Source = new Uri("https://google.com");
        webPageWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
    }


private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
   uriTextBox.Text = webPageWebBrowser.Source.AbsoluteUri;
}

从文档中:

设置 source 属性会使 WebBrowser 导航到 Uri 指定的文档。如果 Uri 为空,则显示一个空白文档(“about:blank”)。

所以我假设源在加载之前为空。


推荐阅读