一、控件的差异

作为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组成。如下图所示。

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

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

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

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

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

WinForm和WPF的区别相关推荐

  1. 技术总结:winform和wpf的区别 以及 项目的“设计规划”

    一.winform和wpf的区别: 1.winform 是"前后端"不分离的,wpf是前后端分离的.这个是winform的设计器和c#编码"耦合度"太高了,不能 ...

  2. 基础tips:.NET和ASP.NET还有ASP到底是什么?客户端WinForm和WPF的区别?前端三大框架,webpack和vite的比较,android三大框架.

    1..NET和ASP.NET分别是什么? .NET是微软的一个开发平台,其主要核心就是.NET Framwork,这个平台的一大特点就是跨语言性,不管是什么语言,c.c++.c#.F#.J#.vb等语 ...

  3. Winform、WPF、Silverlight、MFC区别与联系

    WinForm 在Windows中,诸如窗体绘制等功能由GDI(图形设备接口)实现,放在操作系统内核中.Windows Forms在底层使用的是GDI+.GDI+是GDI的"面向对象包装&q ...

  4. wpf和winform的那点区别

    一提起winform和wpf有啥不同,可能大部分人都会想到wpf拥有漂亮的界面.wpf中也可以使用winform,大部分情况下,都没有任何问题,极少的情况下,可能会出现问题. 我们就来看一下: voi ...

  5. winform 与WPF

    winform 与WPF 在多线程上的改进性能没大区别,WPF 是富客户端,winform是常见的客户端,就是说wpf实现一些绚丽界面比winform更容易,这就是他们的区别,当然wpf是微软取代wi ...

  6. 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])...

    常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...

  7. Windows程序设计:MFC 、Winform 和 WPF 比较

    MFC生成本机代码,自然是很快,可是消息循环减缓了界面显示速度. WinForm封装了win32的api,多次进行P/invoke操作(大部分使用p/invoke操作封装),速度慢. WPF是一种新的 ...

  8. 浅析.Net 在 winform及wpf中涉及界面交互的多线程类的封装

    我们在开发客户端程序时,经常要用到多线程 而我们知道 , .Net 中从线程安全的考虑,对控件改变的调用要通过Invoke, beginvoke 来进行,这就涉及怎么进行工作线程与界面的互操作. 本文 ...

  9. winform,wpf全屏 还显示任务栏的解决方法

    winform,wpf全屏 还显示任务栏的解决方法 参考文章: (1)winform,wpf全屏 还显示任务栏的解决方法 (2)https://www.cnblogs.com/Viki/archive ...

  10. 2021-12-12 WPF面试题 相对于Winform,WPF有什么优势?

    相对于Winform,WPF有什么优势? 1 - 绑定(更简约的编码) 2 - 灵活的外观和感受(资源和样式) 3 - 声明式编程 (XAML) 4 - 表现层混合动画(动画开发简单) 5 - 快速加 ...

最新文章

  1. 2017云计算及工业物联网论坛即将于广州开幕
  2. java EE的apache-tomcat配置文件web.xml
  3. 鏖战双十一-阿里直播平台面临的技术挑战
  4. python3.6入门到高阶(全栈) day02 while循环 运算符 格式化输出 编码
  5. python删除指定文件夹下文件和文件夹的方法
  6. [云炬创业基础笔记] 第四章测试11
  7. DBA邀请函丨数据库大咖讲坛来深圳啦!线下沙龙+线上直播,共享技术盛会!
  8. 如何评价@左耳朵耗子 的《关于阿里云经典网络的问题》?
  9. 系统设计之架构图——应用架构图、技术架构图、业务架构图
  10. 机器人出卢安娜飓风_LOL:卢安娜的飓风已经过时?哪些英雄还会出这件装备?...
  11. config配置中文解释
  12. wps时间戳转换成日期
  13. 【转载】国内主要的量化交易平台及链接
  14. linux基础操作合集(正在写)
  15. 【供应链架构day9】美团配送系统架构的演进之路:从MVP到规模化
  16. Excel会计应学35招秘技
  17. 我敢说80% 的程序员都掉进了「老鼠赛跑」的陷阱
  18. 3. ZCU102 HDMI Demo工程修改【PCIE视频传输】
  19. Vivado中的TCL脚本语言
  20. 百度地图导航及水印(补充)

热门文章

  1. 7.24实习培训日志-Docker-Compose
  2. Oracle学习笔记(1)----忘记用户名的密码该如何找回
  3. Object-C,NSSet,不可变集合
  4. SharedPreferences小探
  5. Java类权限和类成员权限举例解析
  6. 语音推送提醒php,实时语音后台通知消息 - 百度免费的tts实现后台实时在线语音消息提醒 – 基于ThinkPHP和Bootstrap的极速后台开发框架...
  7. word段落居中的快捷键_Word一分钟完成人员名单排版,这方法又快又好!
  8. ubuntu 添加删除源
  9. ubuntu18.10 编译安装caffe gpu版本
  10. Qt_加速编译 快速编译 make -j4