首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【愚公系列】2023年09月 WPF控件专题 XAML介绍
2
【愚公系列】2023年09月 WPF控件专题 WPF应用程序组成
3
【愚公系列】2023年09月 WPF控件专题 Window窗体属性和事件
4
【愚公系列】2023年09月 WPF控件专题 Label、TextBox、PasswordBox控件介绍
5
【愚公系列】2023年09月 WPF控件专题 Button控件详解
6
【愚公系列】2023年09月 WPF控件专题 RadioButton控件详解
7
【愚公系列】2023年09月 WPF控件专题 CheckBox控件详解
8
【愚公系列】2023年09月 WPF控件专题 Image控件详解
9
【愚公系列】2023年09月 WPF控件专题 Border控件详解
10
【愚公系列】2023年09月 WPF控件专题 ComboBox控件详解
11
【愚公系列】2023年09月 WPF控件专题 ListBox控件详解
12
【愚公系列】2023年09月 WPF控件专题 DatePicker控件详解
13
【愚公系列】2023年09月 WPF控件专题 Calendar控件详解
14
【愚公系列】2023年09月 WPF控件专题 Slider控件详解
15
【愚公系列】2023年09月 WPF控件专题 ProgressBar控件详解
16
【愚公系列】2023年10月 WPF控件专题 StackPanel控件详解
17
【愚公系列】2023年10月 WPF控件专题 WrapPanel控件详解
18
【愚公系列】2023年10月 WPF控件专题 DockPanel控件详解
19
【愚公系列】2023年10月 WPF控件专题 Canvas控件详解
20
【愚公系列】2023年10月 WPF控件专题 Grid控件详解
21
【愚公系列】2023年10月 WPF控件专题 Groupbox控件详解
22
【愚公系列】2023年10月 WPF控件专题 Expander控件详解
23
【愚公系列】2023年10月 WPF控件专题 TabControl控件详解
24
【愚公系列】2023年10月 WPF控件专题 Frame控件详解
25
【愚公系列】2023年10月 WPF控件专题 ListView控件详解
26
【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解
27
【愚公系列】2023年10月 WPF控件专题 Menu控件详解
28
【愚公系列】2023年10月 WPF控件专题 ContextMenu控件详解
29
【愚公系列】2023年10月 WPF控件专题 TreeView控件详解
30
【愚公系列】2023年10月 WPF控件专题 ToolBar控件详解
31
【愚公系列】2023年10月 WPF控件专题 ToolBarTray控件详解
32
【愚公系列】2023年10月 WPF控件专题 StatusBar控件详解
33
【愚公系列】2023年11月 WPF控件专题 MediaElement控件详解
34
【愚公系列】2023年11月 WPF控件专题 RichTextBox控件详解
35
【愚公系列】2023年11月 WPF控件专题 GridView控件详解
36
【愚公系列】2023年11月 WPF控件专题 Rectangle控件详解
37
【愚公系列】2023年11月 WPF控件专题 Popup控件详解
38
【愚公系列】2023年11月 WPF控件专题 OpenFileDialog控件详解
39
【愚公系列】2023年11月 WPF控件专题 SaveFileDialog控件详解
40
【愚公系列】2023年11月 WPF控件专题 RepeatButton控件详解
41
【愚公系列】2023年11月 WPF控件专题 Ellipse控件详解
42
【愚公系列】2023年11月 WPF控件专题 Polygon控件详解
43
【愚公系列】2023年11月 WPF控件专题 Path控件详解
44
【愚公系列】2023年11月 WPF控件专题 WindowFormsHost控件详解
45
【愚公系列】2023年11月 WPF控件专题 WebBrowser控件详解
46
【愚公系列】2023年11月 WPF控件专题 Validation控件详解
47
【愚公系列】2023年11月 WPF控件专题 Page控件详解
48
【愚公系列】2023年11月 WPF控件专题 PrintDialog控件详解
49
【愚公系列】2023年11月 WPF控件专题 Track控件详解
50
【愚公系列】2023年11月 WPF控件专题 Polyline控件详解

【愚公系列】2023年11月 WPF控件专题 WebBrowser控件详解

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。 🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。

原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。

自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。

🚀一、WebBrowser控件详解

WPF中WebBrowser控件可以用于嵌入网页和显示HTML内容。它是一个基于Internet Explorer的控件,允许在WPF应用程序中显示Web内容。使用WebBrowser控件可以方便地实现浏览器功能和与Web内容的交互。

WebBrowser控件可以通过以下步骤来添加和使用:

  1. 在Visual Studio中打开WPF应用程序并打开窗口的XAML文件。
  2. 在控件库中找到WebBrowser控件并将其拖放到窗口中。
  3. 在代码中,可以使用WebBrowser控件的Navigate()方法来导航到指定URL的网页。例如:
代码语言:txt
复制
webBrowser.Navigate("http://www.baidu.com");
  1. WebBrowser控件还提供了许多有用的属性和方法,例如CanGoBack和CanGoForward属性,Back和Forward方法等,用于实现浏览器的后退和前进功能。

需要注意的是,WebBrowser控件的默认用户代理字符串是Internet Explorer的用户代理字符串,这可能会影响到某些Web应用程序的表现。如果需要,可以通过设置WebBrowser控件的属性来更改用户代理字符串。

🔎1.属性介绍

WPF中WebBrowser控件的常用属性如下:

  1. Source:设置WebBrowser控件要显示的网址。
  2. CanGoBack:表示是否可以后退。
  3. CanGoForward:表示是否可以前进。
  4. Document:获取当前页面的HTML文档。
  5. IsNavigating:表示是否正在导航。
  6. NavigateToString:根据指定的HTML文本导航到一个新的页面。
  7. Navigate:根据指定的URI导航到一个新的页面。
  8. ScriptErrorsSuppressed:设置是否禁止显示脚本错误。
  9. DefaultBackgroundColor:设置默认背景颜色。
  10. ScrollBarsEnabled:设置是否显示滚动条。
  11. Zoom:设置网页缩放级别。

🔎2.常用场景

WPF中的WebBrowser控件可以用于多种场景,常见的包括:

  1. 显示Web页面:可以将WebBrowser控件放置于WPF窗体中,用于加载、显示Web页面。
  2. 嵌入浏览器:WebBrowser控件可以作为WPF应用程序内置浏览器使用,允许用户在应用程序中浏览互联网。
  3. 跨域访问:可以使用WebBrowser控件实现跨域访问,例如在WPF应用程序中访问其他域名的Web服务。
  4. 打印Web页面:WebBrowser控件提供了打印Web页面的功能,可以用于打印HTML页面或PDF文档等。
  5. 处理JavaScript:WebBrowser控件支持JavaScript脚本,可以使用它来执行一些动态效果或与服务器交互。

🔎3.具体案例

以下是一个简单的WPF WebBrowser控件的案例:

  1. 在WPF窗口中添加一个WebBrowser控件:
代码语言:html
复制
<WebBrowser Name="browser" />
  1. 在代码中,使用Navigate()方法加载网页:
代码语言:c#
复制
browser.Navigate(new Uri("https://www.google.com"));
  1. 可以使用Document属性来获取WebBrowser控件中当前显示的文档,并且可以通过操作其HTML和JavaScript来进行修改和交互:
代码语言:c#
复制
private void OnDocumentCompleted(object sender, NavigationEventArgs e)
{
    dynamic doc = browser.Document;
    string title = doc.Title;
    string body = doc.Body.InnerHtml;
    doc.Body.InnerHtml += "<p>New HTML content added with C#</p>";
    doc.InvokeScript("alert", new string[] { "Hello from C#" });
}

在上述代码中,使用Document属性来获取当前文档,然后将其标题和HTML内容读取到变量中。然后使用InnerHtml属性向文档中添加新的HTML内容。最后,使用InvokeScript方法调用JavaScript代码,弹出一个提示框。

  1. 可以使用Navigating和Navigated事件来监控WebBrowser控件的导航过程:
代码语言:c#
复制
public MainWindow()
{
    InitializeComponent();

    browser.Navigating += OnNavigating;
    browser.Navigated += OnNavigated;

    browser.Navigate(new Uri("https://www.google.com"));
}

private void OnNavigating(object sender, NavigatingCancelEventArgs e)
{
    Debug.WriteLine($"Navigating to {e.Uri}");
}

private void OnNavigated(object sender, NavigationEventArgs e)
{
    Debug.WriteLine($"Navigated to {e.Uri}");
}

在上述代码中,分别使用Navigating和Navigated事件来监控WebBrowser控件的导航过程,并将当前导航的URL打印到控制台中。

🚀扩展

WPF中的WebBrowser控件支持通过JavaScript与HTML页面进行交互,可以在C#代码中调用JavaScript函数,同时也可以在JavaScript代码中调用C#中的方法。因此,可以通过JavaScript传递参数来实现WPF中WebBrowser控件之间的交互。

在WPF的WebBrowser控件中,可以使用InvokeScript方法来调用JavaScript函数。例如,在C#代码中调用JavaScript中的函数:

代码语言:c#
复制
webBrowser.InvokeScript("functionName", parameter1, parameter2);

在JavaScript代码中调用C#中的方法,则需要在C#代码中注册一个方法,并通过WebBrowser控件的ObjectForScripting属性将该方法传递给WebBrowser控件:

代码语言:c#
复制
webBrowser.ObjectForScripting = new ScriptingObject();

其中,ScriptingObject是一个自定义的C#类,该类中定义了可以供JavaScript调用的方法。例如:

代码语言:c#
复制
public class ScriptingObject
{
    public void MethodName(string parameter)
    {
        // 处理逻辑
    }
}

在JavaScript代码中,可以通过window.external来调用在C#中注册的方法:

代码语言:javascript
复制
window.external.MethodName(parameter);

通过以上方法,可以实现WPF中WebBrowser控件之间的参数传递和交互。


我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

下一篇
举报
领券