如何使WebBrowser正确呈现WebPages?

时间:2017-01-23 08:35:08

标签: c#

using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.Security.Permissions;
using Microsoft.Win32;

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]

public class Program : Form

{       

private WebBrowser webBrowser;

public Program()
{
    InitialiseForm();
}

public void InitialiseForm()
{
    webBrowser = new WebBrowser();
    Controls.AddRange(new Control[] {webBrowser});
    webBrowser.ScriptErrorsSuppressed = true;
    webBrowser.Dock = DockStyle.Fill;

    webBrowser.Navigate("http://www.nationalgeographic.com/");

}

[STAThread]

public static void Main()
{
    Application.EnableVisualStyles();
    Application.Run(new Program());
}

我被告知要在我的设置中粘贴下面这段代码,我就是这么做的。我甚至不知道它做了什么。我只想使用C#WebView构建webBrowser。为什么这变得如此复杂,如何正确地使WebBrowser渲染页面。它只显示我的webView上的水平线的空白页面以及我的计算机上运行的Internet Explorer版本。我试图显示的网页是nationalgeographic.com.Please help

private void Form1_Load(object sender, EventArgs e) {
        var appName = Process.GetCurrentProcess().ProcessName + ".exe";
        SetIE8KeyforWebBrowserControl(appName);
}  

private void SetIE8KeyforWebBrowserControl(string appName) {
        RegistryKey Regkey = null;
        try
        {
                // For 64 bit machine
            //if (Environment.Is64BitOperatingSystem)
                //Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Wow6432Node\\Microsoft\\Internet Explorer\\MAIN\\FeatureControl\\FEATURE_BROWSER_EMULATION", true);

//else  
//For 32 bit machine
        Regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION", true);


    // If the path is not correct or
    // if the user haven't priviledges to access the registry
    if (Regkey == null)
    {
        MessageBox.Show("Application Settings Failed - Address Not found");
        return;
    }

    string FindAppkey = Convert.ToString(Regkey.GetValue(appName));

    // Check if key is already present
    if (FindAppkey == "8000")
    {
        MessageBox.Show("Required Application Settings Present");
        Regkey.Close();
        return;
    }

    // If a key is not present add the key, Key value 8000 (decimal)
    if (string.IsNullOrEmpty(FindAppkey))
        Regkey.SetValue(appName, unchecked((int)0x1F40), RegistryValueKind.DWord);

    // Check for the key after adding
    FindAppkey = Convert.ToString(Regkey.GetValue(appName));

    if (FindAppkey == "8000")
        MessageBox.Show("Application Settings Applied Successfully");
    else
        MessageBox.Show("Application Settings Failed, Ref: " + FindAppkey);
}
catch (Exception ex)
{
    MessageBox.Show("Application Settings Failed");
    MessageBox.Show(ex.Message);
}
finally
{
    // Close the Registry
    if (Regkey != null)
        Regkey.Close();
}

}

}

1 个答案:

答案 0 :(得分:0)

.NET中使用的Web浏览器是Internet Explorer,您可以从WebBrowser.Version确定版本,我建议使用Chromium Web浏览器,它可以作为nuget包使用,可以用作Windows窗体或WPF控件,并支持html 5,它比IE更好,检查他们的项目并搜索C#的教程,查看此链接:https://github.com/cefsharp/CefSharp

相关问题