WinForm和WPF的区别「建议收藏」

一、控件的差异作为Windows桌面UI开发的两大.net开发库,WinForm和WPF同时存在着。之所以功能如此重合的两个库同时存在,是因为两者的底层差异非常大,WinForm底层依赖于传统的Win32API,特别是User32.dll;而WPF则底层依赖于Direct3D。而我们知道User32和Direct3D两者是平行存在,彼此独立的。WPF之前几乎所有的WindowsUI开发都依赖于User32,当然游戏除外。随着Direct3D的日趋成熟和显卡的普通性能提升,微软力图改变这种状况,所以开发

大家好,又见面了,我是你们的朋友全栈君。

一、控件的差异

作为Windows桌面UI开发的两大.net开发库,WinForm和WPF同时存在着。之所以功能如此重合的两个库同时存在,是因为两者的底层差异非常大,WinForm底层依赖于传统的Win32API,特别是User32.dll;而WPF则底层依赖于Direct3D。 而我们知道User32和Direct3D两者是平行存在,彼此独立的。WPF之前几乎所有的WindowsUI开发都依赖于User32,当然游戏除外。随着Direct3D的日趋成熟和显卡的普通性能提升,微软力图改变这种状况,所以开发出了WPF来让一般的应用程序也使用Direct3D进行UI开发。当然,这一改变的影响是巨大的,传统的User32是以窗口为基础的,所有的控件都是一种特殊的窗口而已。而在Direct3D里,不再有窗口的存在。下面我们通过一个简单的实例来对比WinForm程序和WPF程序。

两者的UI看起来完全一样,都是有两个TextBox和一个Button组成。如下图所示。

WinForm和WPF的区别「建议收藏」

WinForm和WPF的区别「建议收藏」

启动Spy++,查找这两个程序的主窗口,见下面的红色区域。

WinForm和WPF的区别「建议收藏」

可以很清楚的看出,WinForm程序中的每个控件都是一个窗口,而WPF程序中的控件不再是窗口。

由于WPF中的控件不再是窗口,所以和控件的通信就不能再使用窗口消息(SendMessage)了,这将导致很大的开发差异。

< ps:《C#实现不同窗口间的消息通信》的2种方法可参考https://blog.csdn.net/dong123ohyes/article/details/117160473 >

尽管WinForm和WPF中的控件类名相同,但其实两者没有任何关联,各自定义在不同的命名空间中。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128583.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 小技巧 – Chrome 浏览器绕过“请在微信客户端打开链接”

    小技巧 – Chrome 浏览器绕过“请在微信客户端打开链接”微信和QQ内置浏览器UA~安卓QQ内置浏览器UAMozilla/5.0(Linux;Android5.0;SM-N9100Build/LRX21V)>AppleWebKit/537.36(KHTML,likeGecko)Version/4.0>Chrome/37.0.0.0MobileSafari/537.36V1_AND_SQ_5.3.1_196_YYB_D>QQ/5.3.1.2335NetType/WIFI安卓…

  • 什么是WSDL_wsdl文件详解

    什么是WSDL_wsdl文件详解WSDL(网络服务描述语言,WebServicesDescriptionLanguage)是一门基于XML的语言,用于描述WebServices以及如何对它们进行访问。wsdl:definitionsname=”nmtoken”?targetNamespace=”uri”>importnamespace=”uri”location=”uri”/>*

    2022年10月23日
  • .gho文件检查

    .gho文件检查虽然目前windows10的接受程度越来越广泛,但我接触到的一些非IT人士还是钟爱于windows7系统,本文记录一下在使用ghost还原系统遇到的问题。gho还原失败在还原ghost系统过程中,遇到gho文件损坏,还原失败,导致系统重装卡住,且大部分的PE系统都不能上网,这就比较麻烦了。因为gho文件一直保存于U盘中,可能在平时使用U盘过程中操作不当导致数据出现损坏。为了避免这种事情的再次发生,…

  • Java四舍五入保留两位小数

    Java四舍五入保留两位小数文章目录Java四舍五入保留两位小数一、前言环境二、正文BigDecimalDecimalFormatMathcommons-math3String#formatJava四舍五入保留两位小数一、前言环境开发工具:IntelliJIDEAJDK:1.8BigDecimal:https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.htmlDecimalFormat:https://docs.oracle.com/java

  • mysql 同步远程数据库_两个sql数据库数据实时同步

    mysql 同步远程数据库_两个sql数据库数据实时同步1.服务配置说明:服务器名称服务器地址数据库名称用户名密码端口数据库服务器A121.xx.xx.xxyoujihui_zsrootyoujihui3306数据库服务器B120.yy.yy.yyy

    2022年10月15日
  • 使用phpmaill发送邮件的例子

    使用phpmaill发送邮件的例子

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号