在C#中显示网页

时间:2018-09-09 07:47:53

标签: c# html winforms webbrowser-control

我想以C#项目的Windows形式显示网页:http://vhg.cmp.uea.ac.uk/tech/jas/vhg2018/WebGLAv.html

Screenshot of webpage

我在其中使用WebBrowser工具,并编写以下代码以在表单中显示此网页:

webBrowser1.Navigate("http://vhg.cmp.uea.ac.uk/tech/jas/vhg2018/WebGLAv.html");

但是它没有显示完整的网页!

This shows like this

我应该怎么做?

2 个答案:

答案 0 :(得分:2)

默认情况下,Windows窗体应用程序使用IE包装器,并且不保证使用最新的IE版本。阅读this article可以了解IE包装程序背后发生的情况以及Windows仿真密钥的作用。

我的一个旧项目中的这段代码允许以编程方式为可执行程序更改IE的默认仿真版本:

private static readonly string BrowserEmulationRegistryKeyPath =
            @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";

        /// <summary>
        /// Add the process name to internet explorer emulation key
>       /// i do this because the default IE wrapper dose not support the latest JS features
>       /// Add process to emulation key and set a DWord value (11001) for it means we want use IE.11 as WebBrowser component
        /// </summary>
        public bool EmulateInternetExplorer()
        {
            using (
                var browserEmulationKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationRegistryKeyPath,
                    true))
            {
                if (browserEmulationKey == null)
                    Registry.CurrentUser.CreateSubKey(BrowserEmulationRegistryKeyPath);


                string processName = $"{Process.GetCurrentProcess().ProcessName}.exe";

                // Means emulation already added and we are ready to start
                if (browserEmulationKey?.GetValue(processName) != null)
                    return true;

                // Emulation key not exists and we must add it ( We return false because application restart to take effect of changes )
                if (browserEmulationKey != null)
                {
                    browserEmulationKey.SetValue(processName, 11001, RegistryValueKind.DWord);
                    browserEmulationKey.Flush();
                }
                return false;
            }
        }

如果您的网站在最新的Internet Explorer(不兼容)中无法正确显示,则应使用将Chromium嵌入到您的.Net应用程序中的其他Web浏览器包装程序(如cefSharp)。

答案 1 :(得分:0)

您可以使用Google SDK来浏览或使用显示html内容的方式来对此进行裁判 link