Heim >Backend-Entwicklung >C++ >Warum funktioniert mein Webbrowser-Steuerelement in Visual Studio nicht richtig, wenn FEATURE_BROWSER_EMULATION auf IE10 oder IE11 gesetzt wird?

Warum funktioniert mein Webbrowser-Steuerelement in Visual Studio nicht richtig, wenn FEATURE_BROWSER_EMULATION auf IE10 oder IE11 gesetzt wird?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-04 10:15:02568Durchsuche

Why does my Web Browser control in Visual Studio malfunction when setting FEATURE_BROWSER_EMULATION to IE10 or IE11?

Probleme mit der Webbrowser-Steuerungsemulation mit FEATURE_BROWSER_EMULATION

Problembeschreibung:

Bei der Nutzung des Webs Bei der Browsersteuerung in Visual Studio 2013 führt das Festlegen des Registrierungsschlüssels FEATURE_BROWSER_EMULATION für die Anwendung auf IE10- oder IE11-Emulationswerte zu einer Fehlfunktion der Steuerung. Insbesondere funktioniert die Monats-Datumsauswahl auf einer Dojo Toolkit-Demoseite (http://demos.dojotoolkit.org/demos/calendar/demo.html) nicht richtig.

Lösung:

Das Problem liegt in der Registrierungseinstellung FEATURE_NINPUT_LEGACY_MODE. Durch Deaktivieren dieser Einstellung und Aktivieren anderer Funktionen über die Registrierungskonfiguration wird das Problem behoben. Hier ist eine überarbeitete Lösung:

const int POLL_DELAY = 250;
WebBrowser _webBrowser;

// set WebBrowser features, more info: http://stackoverflow.com/a/18333982/1768303
static void SetWebBrowserFeatures()
{
    // don't change the registry if running in-proc inside Visual Studio
    if (LicenseManager.UsageMode != LicenseUsageMode.Runtime)
        return;

    var appName = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);

    var featureControlRegKey = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\";

    Registry.SetValue(featureControlRegKey + "FEATURE_BROWSER_EMULATION",
        appName, GetBrowserEmulationMode(), RegistryValueKind.DWord);

    // enable the features which are "On" for the full Internet Explorer browser

    Registry.SetValue(featureControlRegKey + "FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION",
        appName, 1, RegistryValueKind.DWord);

    Registry.SetValue(featureControlRegKey + "FEATURE_AJAX_CONNECTIONEVENTS",
        appName, 1, RegistryValueKind.DWord);

    Registry.SetValue(featureControlRegKey + "FEATURE_GPU_RENDERING",
        appName, 1, RegistryValueKind.DWord);

    Registry.SetValue(featureControlRegKey + "FEATURE_WEBOC_DOCUMENT_ZOOM",
        appName, 1, RegistryValueKind.DWord);

    // Disable FEATURE_NINPUT_LEGACY_MODE
    Registry.SetValue(featureControlRegKey + "FEATURE_NINPUT_LEGACYMODE",
        appName, 0, RegistryValueKind.DWord);
}

Mit dieser aktualisierten Konfiguration sollte die Webbrowser-Steuerung jetzt ordnungsgemäß mit den IE10- und IE11-Emulationseinstellungen für die Anwendung funktionieren.

Das obige ist der detaillierte Inhalt vonWarum funktioniert mein Webbrowser-Steuerelement in Visual Studio nicht richtig, wenn FEATURE_BROWSER_EMULATION auf IE10 oder IE11 gesetzt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn