WPF 与网页交互(Frame,WebBrowser)

WPF中有个很好的机制,就是Frame,Frame不仅可以像网页中的Frame一样加载Wpf的page对象,还可以加载WEB,使用方法:

frame1.Source = new Uri("http://localhost:2613/Default.aspx");

当然也可以用Navigate方法设置Source的Uri,还可以通过设置Content,但是稍微麻烦一点,因为需要创建一个WebBrowser对象作为Content。

 

在WPF界面中放入Frame控件,并设置好Source后,运行,就可以理解看到网页被嵌入到了Frame中。

 

仅仅是现实网页并不是我的目的,我需要和网页交互。

 

在web开发的过程中,可以知道,Javascript或其他脚本语言或者插件都需要通过获得web的document对象,然后操作这个document对象。因此,没有例外,我们需要获得Frame加载的页面的Document对象。

方法如下:

 

            WebBrowser wb =  (WebBrowser)frame1.Content;

            要获得Frame加载的网页的内容就一定需要获得Frame的Content属性,frame的Content属性是Object,但是因为我们加载的是网页,因此,Content属性的真实类型是System.Windows.Controls.WebBrowser,虽然VS2008工具栏里没有WebBrowser控件,但是Frame加载的网页依然是以WebBrowser类型返回的,也许是Frame能做的事情比较多,因此没必要再用WebBrowser控件了,但是依然有WebBrowser类来处理网页对象。

 

            mshtml.HTMLDocumentClass htmldocument = (mshtml.HTMLDocumentClass)wb.Document;

           获得WebBrowser后,我们就需要获得WebBrowser中的网页文档对象了HTMLDocumentClass,这个类里才具体包含了网页文档的具体属性和方法。WebBrowser对象的网页文档对象就是Document属性返回的对象,因此用上面一句就可以获得了,但是有个地方要注意,创建项目后默认是没有mshtml.HTMLDocumentClass引用的,因此手动引用.NET库里的Microsoft.mshtml程序集。

 

           htmldocument.getElementByIdx("test").setAttribute("value","修改后内容",0);

           接下来的事情就如同用Javascript在WEB中的操作过程了。

 

不得不说,WPF开发上确实比较方便了,在不熟悉的情况下也许比较困难,但是熟悉了WPF,感觉能轻松完成之前在WINFORM里比较困难的操作!WPF中的Frame确实很不错,好用,之前开发用其加载WPF的PAGE项,能把桌面应用工作机制做得像浏览器一样,现在又发现其可以和WEB如此无缝的结合,WPF确实能将WEB和桌面应用整合得很好!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中使用WebView2控件,可以通过以下步骤与网页中的JavaScript进行交互: 1. 首先,确保你已经在项目中安装了Microsoft.Web.WebView2 NuGet包。 2. 在XAML文件中,将WebView2控件添加到窗口中: ```xml <Window ... xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf" > <Grid> <wv2:WebView2 x:Name="webView" Source="https://www.example.com" /> </Grid> </Window> ``` 3. 在代码中,可以使用以下代码来在WebView2控件加载完成后添加JavaScript事件监听器: ```csharp private async void WebView_CoreWebView2Ready(object sender, RoutedEventArgs e) { await webView.EnsureCoreWebView2Async(); webView.CoreWebView2.WebMessageReceived += CoreWebView2_WebMessageReceived; } ``` 4. 接下来,你可以通过以下代码向网页中注入JavaScript代码: ```csharp await webView.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync("function sendMessageToHost(message) { window.chrome.webview.postMessage(message); }"); ``` 5. 在网页中,你可以通过以下代码与C#代码进行通信: ```javascript // 向C#发送消息 window.chrome.webview.postMessage("Hello from JavaScript!"); // 接收C#发送的消息 window.chrome.webview.addEventListener('message', event => { console.log(`Received message: ${event.data}`); }); ``` 6. 在C#代码中,你可以通过以下代码接收来自网页的消息: ```csharp private void CoreWebView2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e) { string message = e.TryGetWebMessageAsString(); Console.WriteLine($"Received message: {message}"); } ``` 以上就是在C#中使用WebView2控件与网页中的JavaScript进行交互的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值