Example #1
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }