一、课程介绍 我们都知道在软件架构方式分为:C/S和B/S两类。这里阿笨不谈论两种软件架构的优劣之分,因为它们各有千秋,用于不同场合。一位伟大的讲师曾经说过一句话:事物存在即合理!录制这堂课程的目的就是专门给想学习和了解WinForm应用程序的童鞋们。虽然当前主流的架构开发的确大多是WEB端和App移动端开发,可能大家都忽略了传统的WinForm桌面应用程序开发的魅力! 如果您对本次分享《 WinForm企业级框架实战项目演练 》课程感兴趣的话,那么请跟着阿笨一起玩WinForm吧!阿笨将从
说明:<wfi:WindowsFormsHost></wfi:WindowsFormsHost>即为WinForm控件的宿主容器,每一个宿主容器只能放一个WinForm控件,如下例,放了三个WinForm控件,分别放在三个宿主容器里面,该容器可以设置属性来调整大小和布局
WPF开发于WinForm之后,从技术发展的角度,WPF比WinForm先进是不容置疑的。我觉得WPF相比于WinForm有下面的一些较好的特性: 解决Window Handle问题 在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等。而每个控件或Grid cell都是一个小窗口,会使用一个Window handle,尽管控件厂商提供了很多优化办法,但还是会碰到Out of Memory或”Error Create Window handle”,而导致程序退出。 WPF彻底改变了控件显示的模式,控件不在使用窗口,也就不会占用Window handle。理论上,如果一个WPF只有一个主窗口的话,WPF只会使用一个Window handle(如果忽略用于Dispatcher的隐藏窗口的话)。所以WPF GUI程序不会出现Window handle不够用的情况。 多线程的处理 在WinForm程序开发时,最头疼的一个问题就是,worker线程修改控件的属性而导致程序崩溃,而且这种非法操作并不是每次都失败。WinForm控件提供了InvokeRequired属性来判断当前线程是不是控件创建线程。问题是当控件树很深是,这个属性会比较慢。 WPF开始设计的时候,就考虑到了多线程的问题。大部分的WPF类都继承于DispatcherObject。DispatcherObject实际就是对Dispatcher的一个简单封装。Dispatcher提供了类似InvokeRequired的方法(CheckAccess)。这个方法只是比较线程的ID,所以会很快。另外,Dispatcher提供了优先队列,异步调用,Timer等功能,简化了开发多线程GUI程序。 控件的Composition 在WinForm如果要实现一个有Checkbox的下拉菜单,将不得不处理复杂的Window消息。而通过WPF控件的Content Model和Layout系统,WPF控件可以包括任何类型的控件,甚至.Net CLR对象。很多现代的控件厂商也提供了Composition的控件,实现方法和WPF的Content模型也比较相似。WPF开发团队应该借鉴了Infragistics的很多想法。有了这个基础,开发新的WPF控件更加简单了。 XAML 个人觉得XAML应该是WPF中比较划时代的东东。通过XAML,我们可以用文本的方式描述复杂的Object Graph。这个想法在VB中就有了,不过XAML更简化,以便于使用工具来生成XAML。通过Command,Routing Event等机制,界面设计人员和程序员有比较清楚的界限。 Dependency Property 在WinForm开发中,经常碰到的问题就是一个控件的值变了,其他控件也会跟着改变。解决办法,要不是通过写代码,要不是通过数据绑定,前者是界面和代码没法分开,后者还不够灵活。而WPF在这方面通过XAML可以简单的把相关的属性联系起来,通过Extension可以实现复杂的绑定关系。 总的来说,我觉得WPF应该是GUI发展的一个延续,原来GUI中复杂的东西,现在通过简单的文本就可以实现。
最近做程序,需要在一个listview里面嵌入一个按钮,但是请嵌入的按钮无法做出响应。到论坛求助后才得到前辈指点:"这种嵌入控件的控件,最好用wndproc回调函数处理消息。 否则应在父控件窗口中转发命令消息。" 第一种方法:用wndproc回调函数处理消息 import win.ui; /*DSG{{*/ var winform = ..win.form( bottom=356;parent=...;text="AAuto Form";right=351 ) winform.add( listv
在WinForm控件上我们可以看到很多关于键盘消息处理的方法,比如OnKeyDown, OnKeyPress, ProcessCmdKey, ProcessDialogKey,IsInputKey等等,那么这些方法是如何被组织的,每一个方法的具体含义又是什么哪?Win32的键盘消息又是如何到达控件上的这些方法的,本文将着重阐述这些问题,对.Net WinForm控件的键盘消息处理过程进行剖析。 1. WinForm消息循环 大家都知道WinForm也是依赖于底层的消息机制的,通常我们的Win
WPF的原生控件并不具备自身的句柄,即使使用偏门的方式获取的结果也都是控件所在窗体的句柄,并不代表该控件本身的资源,这是由WPF的自身的机制决定的。
WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面
以下内容,来自朝夕教育课程,没有基础的可以去朝夕学学。这里主要是为了方便我自己回顾查询
这是小白学习软件开发系列课程,旨在帮助对电脑编程感兴趣的朋友学习并熟悉C#技术。其中基础部分已经讲解完毕,可以查看:C#入门教程(一)–.Net平台技术介绍、C#语言及开发工具
这是小白学习软件开发系列课程,旨在帮助对电脑编程感兴趣的朋友学习并熟悉C#技术。其中基础部分已经讲解完毕,可以查看:电脑编程入门(10)-C#面向对象编程浅聊,一起自学软件开发
Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。
今天大姚给大家分享2款开源、美观的WinForm UI控件库,希望可以帮助到有需要的同学。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
一起来盘点下5个Winform UI开源控件库,有.Net Framework,也有.Net Core。
“通过使用 ComponentOne .NET控件产品,实现了兼具 BS 架构灵活性与 CS 架构的客户体验。丰富的控件满足了项目中的各种特殊需求,使得开发的精力可以专注于业务逻辑,为团队节省了时间。” ——农业银行报表资源视窗
本站(https://dotnet9.com)曾介绍过一款Winform开源控件库《HZHControls》,文章发布后不少朋友热情的咨询相关控件库信息,由此看来Winform在大家心中的地位还是挺高的。今天小编再分享一款新鲜出炉的 Winform 控件库库——SunnyUI,一起跟 Dotnet9 往下看吧。
辛苦学习网页开发,回报终于来了,在EasyShu近期推出的几大图表中,已经可以顺利转型为使用网页来进行属性配置了。可以为下一步作兼容WPS推出WPS版本的图表插件作准备,一次开发,多次复用。
WPF 和 Winform 是两个单独的平台,但二者又都是基于 .NET 4.0 以上版本开发的,所以很多.NET开发人员就开始研究如何在WPF中使用Winform。微软已经架设了两个开发平台的之间的通信桥梁,目前为止二者相互转换使用已经相当成熟了,今天主要给大家讲讲如何在这两个平台下调用 ComponentOne 的控件。
作为Windows桌面UI开发的两大.net开发库,WinForm和WPF同时存在着。之所以功能如此重合的两个库同时存在,是因为两者的底层差异非常大,WinForm底层依赖于传统的Win32API,特别是User32.dll;而WPF则底层依赖于Direct3D。 而我们知道User32和Direct3D两者是平行存在,彼此独立的。WPF之前几乎所有的WindowsUI开发都依赖于User32,当然游戏除外。随着Direct3D的日趋成熟和显卡的普通性能提升,微软力图改变这种状况,所以开发出了WPF来让一般的应用程序也使用Direct3D进行UI开发。当然,这一改变的影响是巨大的,传统的User32是以窗口为基础的,所有的控件都是一种特殊的窗口而已。而在Direct3D里,不再有窗口的存在。下面我们通过一个简单的实例来对比WinForm程序和WPF程序。
采用QBOXLayout类可以在水平和垂直方向上排列控件,QHBoxLayout和QVBoxLayout类继承自QBoxLayout
QGridLayout(网格布局)是将窗口分割成行和列的网格来进行排列,通常可以使用函数addWidget()将被管理的控件(Widget)添加到窗口中,或者使用addLayout()函数将布局(layout)添加到窗口中,也可以通过addWIdget()函数对所添加的控件设置行数与列数的跨越,最后实现网格占据多个窗格
在布局中要用到addStretch()函数,设置stretch伸缩量后,按比例分配剩余的空间
为方便广大 .NET开发人员更好的使用 ComponentOne Enterprise .NET开发控件集,葡萄城专门推出了 ComponentOne Enterprise 使用指南,该指南详细地介绍了如何把 ComponentOne 各种强大的功能应用到您自己的项目中,助您轻松掌握产品使用技巧,快速完成产品选型。
1、新增 orphanWindow 功能,用于支持控件透明悬浮或显示在父窗口外部。 2、标准库中增加 win.flashBox 组件,用于支持flash桌面透明、或者flash窗口在父窗体上透明悬浮显示。 在传统窗体中,要让一个控件完美透明,并且完美浮动在其他控件前面,是一件比较麻烦的事。 例如 plus 控件也有一些限制,使用剪切背景等方法修正透明带来的闪烁,但是你不能把plus控件浮动在一个按钮前面且显示透明动画。 一个窗体的子窗口总是显示在父窗口的内部,例如你在网页上看到flash是透明的,但是fl
在Python Qt GUI设计:窗口布局管理方法【基础篇】(基础篇—5)文章中,聊到了如何使用Qt Designer进行窗口布局管理,其实在Qt Designer中可以非常方便进行窗口布局管理设计,本篇博文在4种窗口布局方式基础上继续深入聊聊API函数~
aardio中richedit控件默认只能简单设置所有文字的颜色,有时候为了逼格高一点,或者人性化一点,需要用多种颜色显示文字,经过反复研究测试,得出了下面的代码:
最近项目中遇到这样一个问题。之前有一个用WPF布局好的一个Dialog,如下图: 但是,由于WPF的Dialog有一些小问题,当显示Dialog的窗体被别的Active的Application盖住之后
采用QVBoxLayout类,按照从上到下的顺序添加控件 本节内容较少,演示两个实例,便于明白QVBoxLayout(垂直布局)的使用
编程语言做为一种语言自然和英语这些自然语言有类似的地方.学英语时我们知道要先记26个字母,然后单词及其发音,接下来就是词组,句子.反正简单的说就是记单词,熟悉词法,句法.接下来就是应用了,听说读写.而使用相同语言的人大脑里都有个翻译器,可以把自己的想法翻译成语言然后用说或写表达出来,而听和读则把接收来的语言翻译成自己大脑能理解的思想.
经常在技术群里看到有小伙伴提问:WinForm有什么好看、开源的UI库推荐的吗?,今天大姚给大家分享一款基于Ant Design(使用Ant Design 5.0)设计语言、开源(Apache License)的WinForm UI界面库:AntdUI。
3.5)、EF For Mysql如何处理并发脏数据(防止多人同时修改同一条单据数据)
.NET开发领域的总体趋势是互操作性,葡萄城全功能 .NET控件集 ComponentOne 在2018将延续这一趋势:无论是 .NET平台,ASP.NET Core,Xamarin还是未来计划中的XAML标准,互操作性是所有应用程序的关键,这也将作为我们未来产品规划的核心,我们将继续创新和加强现有产品。
WinForm封装了win32的api,多次进行P/invoke操作(大部分使用p/invoke操作封装),速度慢。
企业级信息化系统绝大部分采用BS架构实现,如门户网站、OA系统、电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无感知。但是CS架构的WinForm客户端程序仍然具有很实用的价值,如WPS、IT类的集成开发环境(数据库、图形处理软件)、PC端的小工具。本地程序处理性能更优秀,但是频繁更新带来不友好的客户端体验。还有一种非常常见且实用的业务场景, Web网页与WinForm程序互相集成应用。
最近公司开发的WinForm客户端图书行业ERP管理系统,界面端采用了DevExpress控件库。界面效果非常绚丽,类似于Office2007、2010的界面风格。
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
开源许可协议:GPL-3.0 项目地址: https://gitee.com/yhuse/SunnyUI
领取专属 10元无门槛券
手把手带您无忧上云