当通过 websocket 调用表单时如何加载 webview2 wiform(上一个问题在我编辑后仍然关闭)

How to load webview2 winform when form is called through websocket (previous question still closed after my edit)

提问人:Nic 提问时间:11/13/2023 更新时间:11/17/2023 访问量:33

问:

我对 webview2 很新,因为我发现它是我之前使用的 Cefsharp 的替代品(因为它不支持从 facebook 加载视频)。使用一个简单的 webview2 表单项目,其中包含一个按钮,该按钮显示另一个带有 webview 的表单,它按预期工作(显示带有视频的 facebook)。

现在我的障碍是我试图通过 websocket 消息接收打开 webview2 表单,但我仍然没有运气加载 webview2 并且只显示黑色表单。我正在使用 Application.Run(webview2form) 加载通过 websocket 调用的 webview wiform,因为 webview2form.show 在 websocket 上不起作用。关于这个问题有什么建议吗?谢谢。

我对 webview2 很陌生,因为我发现它是我之前使用的 Cefsharp 的替代品(因为它不支持从 facebook 加载视频)。使用一个简单的 webview2 表单项目,其中包含一个按钮,该按钮显示另一个带有 webview 的表单,它按预期工作(显示带有视频的 facebook)。

现在我的障碍是我试图通过 websocket 消息接收打开 webview2 表单,但我仍然没有运气加载 webview2 并且只显示黑色表单。我正在使用 Application.Run(webview2form) 加载通过 websocket 调用的 webview wiform,因为 webview2form.show 在 websocket 上不起作用。关于这个问题有什么建议吗?谢谢。

代码示例如下:

private void ReceiveMsgFromWebsocket(string message) {

            switch (message)
            {
                case "Web": //if i receive web msg from websocket switchtoweb
                    
                    SwitchToWeb();
                    break;
            }
}

这是我当前的 SwitchToWeb() 代码

private void SwitchToWeb(){

   Mainform mf = new MainForm()
   mf.CallWeb();
}

CallWeb() 的代码

void CallWeb(){
   WebViewForm dw = new WebViewForm ();
   wf.InitWebview(url);
   wf.Show();
}

对于我目前取得的成就,我能够显示表单,但不能显示 webview。但是当我尝试通过按键调用CallWeb()时,显示表单和加载webview没有问题

C# Windows WinForms WebSocket WebView2

评论


答:

0赞 Nic 11/17/2023 #1

到目前为止,我通过使用invoke调用来弄清楚

Invoke(new Action(() => CallWeb());