public WinFormsWindow(WebviewBridge bridge) { if (bridge == null) { throw new ArgumentNullException(nameof(bridge)); } var webviewType = ChooseWebview(); switch (webviewType) { case WebviewType.InternetExplorer: webview = new IeLegacyWebview(WindowsApplication.ContentServerAddress, bridge); break; case WebviewType.EdgeChromium: var edgium = new EdgiumWebview(bridge); edgium.TitleChanged += Webview_TitleChanged; webview = edgium; break; default: throw new InvalidOperationException($"Invalid webview type of {webviewType}"); } // hide control until first page is loaded to prevent ugly flicker // Edgium and IE don't (properly) support setting a webview background color so this is a workaround webview.Control.Visible = false; webview.PageLoaded += Webview_PageLoaded; webview.Control.Location = new System.Drawing.Point(0, 0); webview.Control.Dock = DockStyle.Fill; Controls.Add(webview.Control); }
public WinFormsWindow(WebviewBridge bridge) { if (bridge == null) { throw new ArgumentNullException(nameof(bridge)); } var webviewType = ChooseWebview(); switch (webviewType) { case WebviewType.InternetExplorer: webview = new WinFormsLegacyWebview(WindowsApplication.ContentServerAddress, bridge); break; case WebviewType.Edge: webview = new WinFormsWebview(bridge); break; default: throw new InvalidOperationException($"Invalid webview type of {webviewType}"); } webview.Control.Location = new System.Drawing.Point(0, 0); webview.Control.Dock = DockStyle.Fill; Controls.Add(webview.Control); }
public WinFormsWindow(WindowConfiguration config, IUiFactory windowFactory) { if (windowFactory == null) { throw new ArgumentNullException(nameof(windowFactory)); } this.config = config ?? throw new ArgumentNullException(nameof(config)); bridge = new WebviewBridge(); var contentProvider = new EmbeddedFileProvider(config.ContentAssembly, config.ContentFolder); if (!config.ForceWindowsLegacyWebview && IsEdgeAvailable()) { webview = new WinFormsWebview(config, contentProvider, bridge); } else { string hostAddress; if (string.IsNullOrWhiteSpace(config.ExternalHost)) { server = new ContentServer(contentProvider); server.Start(); hostAddress = server.HostAddress; } else { hostAddress = config.ExternalHost; } webview = new WinFormsLegacyWebview(config, hostAddress, bridge); } webview.Control.Location = new Point(0, 0); webview.Control.Dock = DockStyle.Fill; Controls.Add(webview.Control); Text = config.Title; Width = config.Width; Height = config.Height; CanResize = config.CanResize; ColorTools.ParseHex(config.BackgroundColor, out byte r, out byte g, out byte b); BackColor = Color.FromArgb(r, g, b); if (config.EnableScriptInterface) { bridge.Init(this, webview, windowFactory); } if (config.UseBrowserTitle) { bridge.TitleChanged += Webview_TitleChanged; } SetIcon(config.Icon); }
public WinFormsWindow(WebviewBridge bridge) { if (bridge == null) { throw new ArgumentNullException(nameof(bridge)); } webview = new WinFormsWebview(bridge); webview.Control.Location = new Point(0, 0); webview.Control.Dock = DockStyle.Fill; webview.Control.KeyDown += WebViewKeyDown; Controls.Add(webview.Control); }