WindowsFormsHost控件

article/2025/10/13 6:42:11

WPF和WinForms是两个不同的UI框架,都是由Microsoft创建的。 WPF是WinForms的一个更现代的替代品,WinForms是第一个.NET UI框架。 为了在两者之间轻松过渡,Microsoft确保WinForms控件仍然可以在WPF应用程序中使用。 这是通过WindowsFormsHost完成的,我们将在本文中讨论。

要通过WindowsFormsHost使用WinForms中的控件,需要在应用程序中添加对以下程序集的引用:

  • WindowsFormsIntegration
  • System.Windows.Forms

在Visual Studio中,通过右键单击项目中的“引用”节点并选择“添加引用”来完成此操作:

在弹出的对话框中,选择“程序集”,然后勾选我们需要添加的两个程序集:

使用WinForms WebBrowser控件

在上一篇文章中,我们使用WPF WebBrowser控件来创建一个小型Web浏览器。 但是,如该文章所述,与WinForms版本相比,WPF WebBrowser控件有点受限。 关于使用WinForms版本可以轻松完成的事情有很多例子,这些版本要么更难,要么无法用WPF版本实现。

 

Make correction

一个小例子是DocumentTitle属性和相应的DocumentTitleChanged事件,这可以轻松获取和更新窗口的标题以匹配当前网页的标题。 我们在的WPF应用程序中用

<Window x:Class="WpfTutorialSamples.Misc_controls.WindowsFormsHostSample"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"Title="WindowsFormsHostSample" Height="350" Width="450"><Grid><WindowsFormsHost Name="wfhSample"><WindowsFormsHost.Child><wf:WebBrowser DocumentTitleChanged="wbWinForms_DocumentTitleChanged" /></WindowsFormsHost.Child></WindowsFormsHost></Grid>
</Window>
using System;
using System.Windows;namespace WpfTutorialSamples.Misc_controls
{public partial class WindowsFormsHostSample : Window{public WindowsFormsHostSample(){InitializeComponent();(wfhSample.Child as System.Windows.Forms.WebBrowser).Navigate("http://www.wpf-tutorial.com");}private void wbWinForms_DocumentTitleChanged(object sender, EventArgs e){this.Title = (sender as System.Windows.Forms.WebBrowser).DocumentTitle;}}
}

特别注意我们在窗口添加WinForms命名空间这行,以便我们可以从中引用控件:

xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

这将允许我们使用wf:前缀引用WinForms控件。

您可以看到,WindowsFormsHost使用起来相当简单。 它有一个Child属性,你可以在其中定义一个WinForms控件,就像WPF Window只保存一个根控件一样。 如果在WindowsFormsHost中需要来自WinForms的更多控件,可以使用WinForms中的Panel控件或任何其他容器控件。

如上所述,WinForms WebBrowser控件使用wf前缀引用System.Windows.Forms程序集。

后台代码中,我们在构造时调用Navigate,在启动时有一个可见的网页而不是空白。 然后我们处理DocumentTitleChanged事件,在该事件中,我们根据WebBrowser控件的当前DocumentTitle值更新Window的Title属性。

恭喜,您现在拥有一个包含WinForms WebBrowser控件的WPF应用程序。

小结

正如您所看到的,在WPF应用程序中使用WinForms控件非常简单,但问题是:这是一个好主意吗?

Make correction

通常,您可能希望避免它。 有许多问题可能会或可能不会影响您的应用程序(这些MSDN文章中描述了很多问题:http://msdn.microsoft.com/en-us/library/aa970911%28v=VS.100%29.aspx),但更严重的问题是,在.NET框架的未来版本中可能不支持这种UI框架混合。

最后,决定权在你 - 你真的需要WinForms控件吗?还是一个能正常工作的WPF替代?

原文地址


http://chatgpt.dhexx.cn/article/V9NI7Ehd.shtml

相关文章

C#添加第三方控件

C#添加第三方控件 第三方控件操作步骤 在项目开发时&#xff0c;C#自带的控件可能无法满足项目需求&#xff0c;需要引入第三方控件&#xff0c;本文主要介绍在VS2019上如何导入第三方控件。 第三方控件 第三方控件指自定义的控件或者用户控件&#xff0c;它们继承自.NET类库…

qt自定义控件

文章目录 前言一、自定义控件需要的准备二、自定义控件步骤1.创建自定义插件2.添加带ui的类&#xff0c;删当前生成的.h和.cpp&#xff0c;重新添加qt带ui的类。3.编辑自定义控件数据4.使用和运行 总结 前言 如何自定义控件 一、自定义控件需要的准备 QT大多数采用MSVC编译&a…

C#自定义控件VS用户控件

C#自定义控件VS用户控件 1、C#中自定义控件VS用户控件大比拼2、为自定义控件&#xff08;或类&#xff09;的方法属性添加注解2.1、Description&#xff1a;在属性窗口中添加属性及属性说明2.2、Browsable2.3、EditorBrowsable2.4、Category2.5、ToolboxBitmap2.6、DefaultEven…

C# 自定义控件

一 自定义控件 1 自定义控件的三种方式&#xff1a; 1&#xff09;复合控件&#xff1a;将标准控件组合起来 class YourControl:UserControl{}2) 扩展控件&#xff1a;继承于标准控件 class YourControl:Button{}3) 自定义控件&#xff1a;完全地自定义一个控件 class You…

C#窗体控件简介

C#窗体控件简介-选项卡控件 在Windows 应用程序中&#xff0c;选项卡用于将相关的控件集中在一起&#xff0c;放在一个页面中用以显示多种综合信息。选项卡控件通常用于显示多个选项卡&#xff0c;其中每个选项卡均可包含图片和其他控件。选项卡相当于多窗体控件&#xff0c;可…

QStackedWidget 控件

一、简介 1、QStackedWidget 控件相当于一个容器&#xff0c;提供一个空间来存放一系列的控件&#xff0c;并且每次只能有一个控件是可见的&#xff0c;即被设置为当前的控件。 2、常用接口函数&#xff1a; addWidget&#xff1a;向容器中添加控件setCurrentWidget&#xf…

测试会遇到的控件

我们测试一个软件&#xff0c;不管是C/S系统还是B/S系统&#xff0c;都会遇到各种各样的控件。控件是构成应用程序交互界面的基本元素&#xff0c;知己知彼&#xff0c;百战不殆&#xff0c;测试它们就要首先了解它们的特性。这里&#xff0c;我对常见的控件做一个汇总。希望大…

11. Windows应用程序常用控件

Windows应用程序常用控件 1 控件概述1.1 控件的分类及作用1.2 控件的命名规范1.2 控件的相关操作2.1 添加控件2.2 对齐控件2.3 锁定控件2.4 删除控件 3 文本类控件3.1 标签控件&#xff08;Label控件&#xff09;3.2 按钮控件&#xff08;button控件&#xff09;3.3 文本框控件…

第五章 Windows基础控件

一、 控件&#xff08;类&#xff09; 1&#xff0c;常用的控件分类及作用&#xff1a; 2&#xff0c;控件的基本操作&#xff1a; 1&#xff09;添加、删除控件&#xff1b; 2&#xff09;对齐控件。 注意&#xff1a;选择的第一个控件是主控键&#xff0c;其他的控件都与其对…

(3)Android常见界面控件

文章目录 3.1 简单控件的使用3.1.1 TextView控件3.1.2 EditText控件3.1.3 Button控件方法一&#xff1a;布局文件中指定点击事件(不常用)方法二&#xff1a;使用内部匿名类实现点击事件方法三&#xff1a;使用Activity实现OnClickListener接口全部实现代码举例 3.1.4 ImageView…

dreamweaver2020中文版

教程&#xff1a; 1、解压下载获得Dreamweaver 2020中文特别版&#xff0c;双击运行它。 2、由于其默认安装路劲为C盘系统盘&#xff0c;因此这里小编选择自定义。 3、选择想要安装的组件。 4、等待安装完成。 5、当向导安装结束后&#xff0c;点击完成。 6、最后双击桌面快捷…

Dreamweaver(Dw)2021软件下载及安装教程并创建一个网页

1.在微信搜索公众号软件星君&#xff08;如图&#xff09; 2. 2.点开链接找到里面的下载链接复制&#xff08;要求windows10&#xff09; 2、系统必须是Windows 10 64bit 3、保证电脑中有任意一款解压软件 安装步骤 1.找到下载好的安装包&#xff0c;并双击打开【Dw 2021 安装…

Dreamweaver 安装破解

Dreamweaver CS6 Mac破解版 发表于 2013 年 2 月 28 日 介于之前小子分享的Mac版的Adobe的PS CS6和Illustrator CS6&#xff0c;有用户要求小子分享下Dreamweaver&#xff0c;小子当然乐意效劳。 Dreamweaver CS6 是世界顶级软件厂商Adobe推出的一套拥有可视化编辑界面&#x…

Dreamweaver2021下载安装

下载路径见如下百度云盘 链接&#xff1a;https://pan.baidu.com/s/1mB6S0xw3KWxPnbOxfQNu7Q 提取码&#xff1a;k1pg 安装 我是从一个公众号学到的&#xff0c;里边有挺多常见工具软件以及详细安装方法。

coreldraw2021全名和序列号 cdr2021安装下载图文教程

CorelDRAW2021一套完整的专业图形设计应用程序开始正确的设计之旅&#xff0c;包括矢量插图、布局、照片编辑等 - 专为您选择的平台而设计。使用 CorelDRAW随时随地在 Windows 或 Mac 上制作独特的插图、广告牌、徽标等。通过 CorelDRAW与客户和同事进行协作&#xff0c;收集一…

Dreamweaver 安装 激活

来源地址&#xff1a;http://jingyan.baidu.com/article/e75aca8575e076142fdac65d.html 怎么安装和激活Dreamweaver cs6详细教程 1 安装Dreamweaver cs6之前&#xff0c;大家要从官网下载Dreamweaver cs6软件&#xff0c;这里我就不介绍怎么下载了。下载后解压压缩包&#xff…

dw怎样用css设置背景图片,dreamweaver

dreamweaverCSS使用教程&#xff1a;定义CSS样式背景属性 背 景 属 性 【定义 CSS 样式背景属性】使用“CSS 样式定义”对话框的“背景”类别可以定义 CSS 样式的背景设置。可以对网页中的任何元素应用背景属性。例如&#xff0c;创建一个样式&#xff0c;将背景颜色或…

CorelDRAW2021标准版 序列号授权码

作为一个设计师没有CorelDRAW用的日子真的是难过&#xff0c;最好用的就是CorelDRAW 2021的增强中文版&#xff0c;拥有极强的插件&#xff0c;为作图方便了不少&#xff01;CorelDRAW作为世界一流的平面矢量绘图软件&#xff0c;被专业设计人员广泛使用&#xff0c;软件使用直…

Adobe Dreamweaver的使用教程

1.打开Adobe Dreamweaver软件 2.打开后的界面 3.新建一个站点&#xff0c;保存网页文件&#xff0c;图片&#xff0c;视频等 4.输入站点的名字和保存的路径 5.新建html文件 6.选择设计模式 7.制作你所需要的结果 8.保存网页&#xff0c;才能在浏览器中预览 9.保存网页&#xff…

Dreamweaver2019版安装教程

吐槽一下 学校机房软件跟新换代也太慢了 软件甚至还是使用CS4古董级 Edition 连H5都不能创建 软件Edition日新月异 百家争鸣的时代 不过自己也高不到哪去&#xff01;使用的Adobe Dreamweaver CS6 前面也发表了低Edition的安装教程 如需考虑低版本请点击传送门 抛弃的原因&a…