我遇到的大多数 Windows 窗体应用程序都不存在或单元测试覆盖率极低。而且它们通常也很难维护,项目中各种 Form 类的代码背后有数百甚至数千行代码,但它不必是这样。...仅仅因为 Windows 窗体是一项“遗留”技术,并不意味着你注定会造成无法维护的混乱。下面是创建可维护和可测试的 Windows 窗体应用程序的十个技巧。 1....在我上面的示例中,它通过引发事件来实现,但通常使用这种模式,你的视图可以直接调用演示者。 绝对不允许视图开始直接操作模型(包括你的业务实体、数据库层等)。...它还允许你集中处理与特定命令有关的所有事情。是否应该启用该命令?它应该是可见的吗?它的工具提示和快捷键是什么?它是否需要特定的特权或许可才能执行?命令运行时抛出的异常应该如何处理?...10.不要太晚 可以将我上面描述的所有模式和技术改造为现有的 Windows 窗体应用程序,但我可以从痛苦的经验告诉你,这可能需要大量工作,尤其是当窗体背后的代码达到数千行时。
欢迎 点赞✍评论⭐收藏 前言 Windows窗体是Microsoft .NET Framework中提供的一种可视化用户界面(GUI)组件,它提供了一个容器,可以在其中添加其他控件,例如按钮、文本框、...通过向窗体添加控件,并使用事件处理程序来响应用户交互,可以创建功能强大的Windows桌面应用程序。...Text属性:指定窗体的标题文字。 Icon属性:指定窗体的图标,通常用于任务栏和窗体的标题栏。 BackColor属性:指定窗体的背景色。...ShowInTaskbar属性:指定窗体是否在任务栏上显示。 Visible属性:指定窗体是否可见。 以上是一些常用的窗体属性,还有很多其他的属性可以用于更细致的控制和定制。...可以用来实现单击窗体时的操作。 DoubleClick事件:当用户双击窗体时触发。可以用来实现双击窗体时的操作。 Resize事件:当窗体大小改变时触发。可以用来实现窗体大小改变时的操作。
P95 的延迟有所减少,得益于GC、分层编译和其他组件的一些改进 6.更好、更灵活的应用部署选项:ClickOnce客户端应用程序发布,单文件应用程序,减小的容器映像大小以及添加的Server Core....NET 5.0 改进了Windows窗体设计器,更改了目标框架适用于.NET 5.0及更高版本的方式,更改了WinRT的支持方式,以及其他的一些改进。...Windows窗体设计器:winform设计器 Windows Forms设计器(用于.NET Core 3.1和.NET 5.0)已经在Visual Studio 16.8中进行了更新,现在支持所有...net5.0支持.NET Framework兼容模式 net5.0-windows 将用于公开Windows特定功能,包括Windows窗体,WPF和WinRT API。...它生成基于C#的WinRT互操作程序集,可以通过NuGet交付该程序集。Windows团队正是针对Windows中的WinRT API所做的。
您可以下载适用于Windows,macOS和Linux的.NET Core 3.1: .NET Core 3.1 SDK和运行时 Docker容器映像 Snap安装程序 ASP.NET Core和EF...NET Standard 2.1包括.NET Core 2.1以后的类型。 .NET Core现在支持Windows窗体和WPF(和开放源代码)的Windows桌面应用程序。...Client: 7, 8.1, 10 (1607+) Windows Server: 2012 R2 SP1+ 注意:Windows窗体和WPF应用程序仅在Windows上起作用并受支持。...随着我们进一步进入Windows Forms设计器项目,我们意识到这些控件与创建现代应用程序不符,并且永远不应该成为Windows Forms的.NET Core端口的一部分。...我们还看到,他们需要我们更多的时间来支持而不是合理的。 我们的目标是继续改进Windows窗体,以实现更高的DPI,可访问性和可靠性,并且需要后期更改才能使我们专注于交付。
该工具支持通过防火墙友好的 HTTP/SSL 连接进行远程管理,并且可以选择同时支持用于身份验证的基于 Windows 的凭据和其他凭据。...几个月以前,我开始发表我的一系列博客文章,以解释新编程模型中的重大改进和模式。...它负责处理向它注册的请求扩展(通常是 .aspx 和少量其他扩展名),并且它还为这些请求提供强大的功能,如窗体身份验证、响应输出缓存以及其他功能,包括由自定义 ASP.NET 模块提供的服务。...除了核心安全性改进以外,IIS 7.0 还提供了大量安全功能,通过使用它们,可以进一步在服务器上锁定和部署安全应用程序。IIS 一直在为通过身份验证保护应用程序内容提供强大支持。...Windows Vista 使您能够在 Windows Vista 服务器版本发布时用于部署应用程序的相同服务器平台上开发和测试这些应用程序。
欢迎 点赞✍评论⭐收藏前言Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...,通过它我们可以创建出具有菜单和子菜单的应用程序界面,实现各种功能。...1.22 ClientSizeClientSize是Winform中控件的一个属性,它表示控件的内部大小。通常,它被用于指定一个控件的工作区大小,即不包括边框和标题栏的可用区域。...在这个案例中,我们创建了一个Windows窗体,并向它添加了一个标签和一个按钮控件。当用户单击按钮时,我们弹出一个消息框显示“Hello, World!”的消息。...Form1类是我们的主窗体,它继承自System.Windows.Forms.Form。 我们还使用了Windows Forms设计工具来构建我们的Winform应用程序。
image.png image.png 而该控件有一个父类AxHost类,进入Axhost类有一个摘要: 包装 ActiveX 控件,并将它们作为功能完整的 Windows 窗体控件公开 对此我陷入了沉思...也就是说ActiveX控件是基于COM对象的,使用COM技术让不同语言编写的控件可以进行互相调用,而如何编写ActiveX控件呢,可以使用ATL 和 MFC,但是两个我都没使用过!...3、COM技术 Microsoft组件对象模型(COM)定义了一个二进制互操作性标准,用于创建在运行时进行交互的可重用软件库。您可以使用COM库,而无需将其编译到应用程序中。...COM是许多Microsoft产品和技术(例如Windows Media Player和Windows Server)的基础。 COM定义了适用于许多操作系统和硬件平台的二进制标准。...这使你得以使用适用于其他 Windows 窗体控件的同一设计时支持和编程方法。 若要承载 ActiveX 控件,必须生成从 AxHost 派生的包装器控件。
前言 在2月份的时候,我之前曾经写过一篇关于Windows消息与C# WinForm事件机制的文章,名为《WinForm事件与消息》。在那篇文章中,我简单探讨了一下事件和消息。...然而如今看来,当时的文章中的案例在运行上存在一定的问题,并且内容也有所缺陷,于是本文将重新优化文章的内容。 消息概述 Windows下窗体应用程序的执行是通过消息驱动的。...System.Windows.Forms.Application Application具有用于启动和停止应用程序和线程以及处理Windows消息的方法。...例如,调用Run以启动当前线程上的应用程序消息循环,并可以选择使其窗体可见;调用Exit或ExitThread来停止消息循环。...到目前为止我们可以看到,消息其实在我们进行事件调用的时候,已经被提取加工了,它已经由Application进行了预处理,形成了所谓的“事件调用”。那么,我们还能更加自定义的干预消息吗?
在Windows系统,最常见的就是Windows Forms程序(以下简称WinForm程序),也就是窗体应用程序,比如MS Office,媒体播放器软件等,WinForm程序比起Web应用程序,明显在实时性...理论上,在Redhat也可以运行一个mono+Gtk#的窗体界面,无赖我的Redhat先是装的mono 2.8.1,我当前使用的monodeveloper开发的Gtk程序必须使用mono 2.8.2的库...程序,虽然可以显示出汉字,但是文本框和窗体大小显示严重有问题,整个窗体都变了形,输入文字反应奇慢,不过没有RedHat中窗体失去响应的问题。...3,在OpenSUSE上运行Gtk#应用程序 按照mono官方的说法,要想开发跨平台的窗体应用程序,窗体的界面开发应该选择Gtk#,而不是Windows GUI。...如果要开发真正跨平台的窗体应用程序,推荐使用Gtk#做开发,它开发出的.NET程序,即可运行在Linux系统,也可以运行在Windows系统。
您可以下载.NET5.0,适用于Windows、MacOS和Linux,适用于x86、x64、Arm32和Arm64。...Windows窗体设计器 Windows窗体设计器(用于.NET Core 3.1和.NET5.0)已在Visual Studio 16.8中进行了更新,现在支持所有Windows窗体控件。...同样的情况也适用于Net6.0的Xamarin Forms。 Visual Studio 16.8中的模板仍然以.NET Core 3.1为目标,用于控制台、WPF和Windows窗体应用程序。...在运行时和库中有很多改进 RyuJIT的代码质量改进 这个版本对JIT有很多改进,我在以前的.NET5.0预览帖中分享了其中的许多改进。...我们致力于使ARM64成为一个基于.NET的高性能平台。这些改进同样适用于Windows和Linux。平台可移植性和一致性一直是.NET令人信服的特点。
变换对象,包括形状、控件和视频。可以创建和动画 3D 图形。可以轻松绘制可缩放的矢量图形而不会出现锯齿状锯齿。2. 说说WPF中的XAML是什么?为什么需要它?它只存在于WPF吗?...XML 主要用于 Web 应用程序。 相比之下,XAML 用于设计 Windows 和其他 Web 应用程序的控件。 XAML 侧重于对象属性、定义以及它们之间的关系。...Dispatcher: 一个抽象基类,用于绑定到一个线程上的类。与Windows窗体类似,WPF也要求仅从创建线程中调用方法和属性。...可以滚动自己的视图,也可以使用 GridView(想想类似资源管理器的“详细信息视图”)。 它基本上是多列列表框,跟 windows 窗体列表视图的表现类似。...ICommand 要求用户定义两个方法,bool CanExecute 和 void Execute。 CanExecute 方法只是告诉用户,我可以执行这个 Action 吗?
https://www.captainbed.cn/f1 Container容器是一种用于封装、部署和运行应用程序的轻量级虚拟化技术,它提供了隔离的运行环境,使得应用程序可以在不同的操作系统和环境中一致地运行...Container作为容器根类,它本身及其子类可以进一步细分。按照是否可以独立存在,容器可以分为两大类: 可独立存在的容器,如Window类。...三、容器演示 窗口容器(Frame) 一般情况下,GUI 程序至少包含一个窗体,它和所容纳的组件一起构成应用程序的交互界面。...在AWT 中,通过 Frame 类实例化窗体对象;默认情况下,得到的窗体既没有大小,也是不可见的;所以必须调用窗体对象的setSize()方法设置大小,调用窗体对象的setVisible()方法设置可见性...面板容器(Panel) 面板是一种特殊的容器,没有边框,不能独立存在和显示,必须作为组件添加到其他容器中:与窗体容器的特性不同。它的功能就是利用既是组件又是容器的特点,对其他组件进行分组放置。
可用于为Windows、Linux和MacOS构建软件应用程序。...Windows窗体、WPF、UWP和Xamarin是构建桌面应用程序的四个主要框架。.NET Core还支持这些框架之间的互操作性。 Windows窗体是一种构建Windows桌面应用程序的技术。...Windows窗体是.NET Framework的首批组件之一。 WPF(Windows Presentation Foundation)是一种较新的构建Windows桌面应用程序的技术。...微服务和容器 微服务是一种新的设计模式,它允许开发人员构建软件服务的小模块,这些模块可以使用定义良好的契约相互通信。微服务使开发、测试和部署应用程序的独立部分更加容易。...C#8增加了新功能,包括 C#8功能 Windows桌面是.NET Core 3.0的新增功能,允许开发人员使用Windows窗体,WPF和UWP构建Windows桌面应用程序。
在表中,带有标记 ✓ 的操作系统版本上安装的 .NET Framework 版本必须在控制面板中启用(适用于 Windows)或通过服务器管理器启用(适用于 Windows Server),该标记显示在...- 支持针对 ASP.NET 窗体身份验证凭据的 SHA-2 哈希处理。- 针对应用开发者的大量辅助功能改进;请参阅 .NET Framework 中辅助功能的新增功能。...- 使用窗口的打印文档包 API 在 WPF 应用程序中进行打印。- 增强了对 Windows 窗体应用程序(在 Windows 10 创意者更新上运行)的高 DPI 和多监视器支持。...- 对 TLS 1.1 和 TLS 1.2 协议的 ClickOnce 支持。- 支持将 Windows 窗体和 WPF 应用转换为 UWP 应用。...393297(所有其他操作系统版本)(请参阅说明) 4.5.2 4 - 用于事务系统和 ASP.NET 的新 API- Windows 窗体控件中的系统 DPI 调整大小功能- 分析改进- ETW 和压力日志记录改进
.NET 6 最突出的功能之一是 .NET MAUI(多平台应用程序 UI),它充当跨平台框架,用于使用 C# 和 XAML 开发本机桌面和移动应用程序。...它包括三个主要的应用程序模型——WPF、Windows 窗体、ASP.NET 窗体——和基类库。...WPF 使用可扩展应用程序标记语言 ( XAML ) 的功能。 Windows 窗体是 .NET Framework 中的一个 GUI 类库。...Windows 窗体用于开发具有易于更新和部署的丰富图形的桌面应用程序。 ASP.NET。虽然前两个组件是为桌面工程设计的,但 ASP.NET 用于开发动态网站和 Web 应用程序。...也许没有其他技术公司拥有如此完整和连贯的生态系统,可以为工程师检查所有框,从 IDE 和框架到云服务。 微软尽最大努力进一步发展。
(C#、F#、VB等),编辑器和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、Windows WPF、Windows窗体、通用 Windows平台 (UWP...然而,也要注意到使用.NET Native可能会使应用程序的大小增大,因为它需要包含运行应用所需的所有.NET库。...AOT编译有以下几个主要优点: 性能改进:由于代码在应用程序执行之前已经完全编译,因此可以消除JIT编译所需的时间,从而提高程序的启动速度。....NET Native 是 .NET Framework 的一个特定实现,它采用了AOT编译策略来提高UWP(Universal Windows Platform)应用程序的性能和效率。...它提供了大量的类库,支持 Web、桌面、移动端等各种应用程序的开发。但由于它只能在 Windows 平台上运行,所以在跨平台方面存在局限性。
欢迎 点赞✍评论⭐收藏 前言 Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框...ToolStripContainer控件可以将这些控件放在一个共同的容器中,并在窗体大小改变时自动调整这些控件的位置和大小。...使用ToolStripContainer控件的好处是可以在窗体中维护一个固定的工具栏,菜单栏和状态栏,并可以自动适应窗体大小的变化。...然后,可以在属性窗口中设置它的属性和添加ToolStrip、MenuStrip和StatusStrip等控件。...多窗体应用程序:ToolStripContainer控件可以用于多窗体应用程序,使得多个窗体可以共享同一个工具栏和状态栏,从而提高用户的效率和操作性。
它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。...通过XAML工具箱中的设计,可以使用现代流行的设计语言轻松地将漂亮的桌面应用程序带到生活中。...组件特征 支持大多数标准WPF控件的样式和变体 更多的附加控件,以支持材质设计的美观性和流动性 在设计和运行时轻松配置材质设计调色板 用于轻松构建GUI动画的转换API 独立工作,也与其他流行的WPF框架...样式与自定义控件 Metro还包括一些基于WindowsPhone、Windows8和Windows10(UWP)应用程序概念的自定义控件。...开源 MahApps.Metro的源代码托管在GitHub上,包含了自己构建它所需的一切,所以请访问并帮助我们改进它。 功能展示 ? ?
领取专属 10元无门槛券
手把手带您无忧上云