Heim >Backend-Entwicklung >C++ >Warum funktioniert mein Webbrowser-Steuerelement in Visual Studio nicht richtig, wenn FEATURE_BROWSER_EMULATION auf IE10 oder IE11 gesetzt wird?
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!