带有WPF的

时间:2016-05-10 11:05:53

标签: c# wpf xaml exception-handling filenotfoundexception

我正在尝试将WebKitBrowser与WPF应用程序一起使用,但是收到的运行时错误显示:

  

FileNotFoundException未被用户代码处理:

     

WpfApplication1.exe中出现“System.IO.FileNotFoundException”类型的异常,但未在用户代码中处理

     

其他信息:无法加载文件或程序集'WebKit.Interop,Version = 533.0.0.0,Culture = neutral,PublicKeyToken = b967213f6d29a3be'或其依赖项之一。系统找不到指定的文件。

我正在创建WebKitBrowser的实例(在我的MainWindow.xaml.cs文件的构造函数内)时发生异常:

System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost();

WebKit.WebKitBrowser browser = new WebKit.WebKitBrowser();

browser.Navigate("http://www.google.com");

host.Child = browser;

browser.Show();

grdBrowserHost.Children.Add(host);

我的using文件顶部有必要的.cs语句:

using System.Windows.Forms;
using WebKit;

我用try-catch语句包围了那段代码,但是当我运行我的代码时,WebKitBrowser没有像我希望的那样添加到窗口中,所以我猜正在捕获/处理异常 - 虽然我没有看到我添加到Console.WriteLine();语句中的try-catch消息。

我尝试捕获FileNotFoundExceptionException,但结果相同 - 应用程序的运行方式与我添加代码以创建实例之前的方式完全相同WebKitBrowser

grdBrowserHost是我给<grid></grid> XML元素的名称,我想在那里显示浏览器,虽然我没有在XML元素中写任何内容 - 我是否需要能够在那里使用的东西显示浏览器?我的XML部分是:

<TabItem Header="Browser">
    <StackPanel>
        <Grid x:Name="grdBrowserHost">
        </Grid>
    </StackPanel>
</TabItem>

修改

虽然我想使用WebKit浏览器或其他支持JavaScript的浏览器等,但我已经看过使用WPF提供的“内置”Web浏览器,并编辑了我的XAML要在我要显示浏览器的<StackPanel></StackPanel>标记内包含以下标记:

<WebBrowser HorizontalAlignment="Left"
                            Height="100"
                            Margin="10, 10, 0, 0"
                            VerticalAlignment="Top"
                            Width="100"
                            Name="BuiltInBrowser" />

在Visual Studio 2015的“设计”视图中,此标记在我的应用程序窗口中显示一个矩形区域,其中将显示浏览器,但是,当我运行应用程序时,主窗口上不显示WebBrowser ,即使Visual Studio 2015中的“设计”视图显示WebBrowser所在的矩形区域(灰色)。

为什么运行应用程序时,WebBrowser在应用程序窗口中不显示,即使它正在设计视图中显示?

如何在此处显示WebKitBrowser,而不是WebBrowser

如果我尝试在我的XAML中打开<WebKitBrowser></WebKitBrowser>标记,该行会显示一条编译错误消息:

  

Windows Presentation Foundation(WPF)项目中不支持WebKitBrowser

如何包含/引用WebKitBrowser以便支持它,我可以使用它?

1 个答案:

答案 0 :(得分:0)

using语句只保存您在该源文件中重复键入命名空间;您将添加一个项目引用到Webkit.Interop(或一个COM类库,它将为您生成一个Interop文件)。那个dll在运行时是必需的,因此你的错误。