【WinForm.NET开发】Windows窗体开发概述
本文内容
- 介绍
- 为什么要从 .NET Framework 迁移
- 生成丰富的交互式用户界面
- 显示和操纵数据
- 将应用部署到客户端计算机
Windows 窗体是一个可创建适用于 Windows 的丰富桌面客户端应用的 UI 框架。 Windows 窗体开发平台支持广泛的应用开发功能,包括控件、图形、数据绑定和用户输入。 Windows 窗体采用 Visual Studio 中的拖放式可视化设计器,可轻松创建 Windows 窗体应用。
Windows 窗体有两种实现:
- 基于 .NET 6+ 上运行。 Windows 窗体可视化设计器最低要求Visual Studio 2019 版本 16.8。最新版本是使用Visual Studio 2022 版本 17.4的 .NET 7 的 Windows 窗体。
- 基于受 Visual Studio 2022、Visual Studio 2019 和 Visual Studio 2017 支持的 .NET Framework 4 实现。.NET Framework 4 是仅限 Windows 的 .NET 版本,被视为一个 Windows 操作系统组件。 此版本的 Windows 窗体随 .NET Framework 一起分发。
1、介绍
Windows 窗体是用于生成 Windows 桌面应用的 UI 框架。 它提供了一种基于 Visual Studio 中提供的可视化设计器创建桌面应用的高效方法。 利用视觉对象控件的拖放放置等功能,可以轻松生成桌面应用。
使用 Windows 窗体,可以开发包含丰富图形的应用,这些应用易于部署和更新,并且在脱机状态下或连接到 Internet 时都可正常工作。 Windows 窗体应用可以访问运行应用的计算机的本地硬件和文件系统。
2、为什么要从 .NET Framework 迁移
.NET 的 Windows 窗体提供优于 .NET Framework 的新功能和增强功能。
2、生成丰富的交互式用户界面
Windows 窗体是用于 .NET 的 UI 技术,是一组简化读取和写入文件系统等常见应用任务的托管库。 使用类似于 Visual Studio 的开发环境时,可以创建 Windows 窗体智能客户端应用,该应用可显示信息、请求来自用户的输入以及通过网络与远程计算机通信。
在 Windows 窗体中,窗体是一种可视图面,可在其上对用户显示信息。 通常情况下,通过向窗体添加控件和开发对用户操作(如点击鼠标或按键)的响应来生成 Windows 窗体应用。 控件是离散的 UI 元素,用于显示数据或接受数据输入。
当用户对你的窗体或一个窗体控件执行了某个操作,该操作将生成一个事件。 应用通过代码对这些事件做出反应,并在事件发生时对其进行处理。
Windows 窗体包含各种可以向窗体添加的控件:显示文本框、按钮、下拉框、单选按钮甚至网页的控件。 如果某个现有控件不满足你的需要,Windows 窗体还支持使用
UserControl类创建自己的自定义控件。
Windows 窗体具有丰富的 UI 控件,这些控件可模拟 Microsoft Office 等高端应用中的功能。 使用ToolStrip
和MenuStrip
控件时,可以创建包含文本和图像的工具栏和菜单、显示子菜单和托管其他控件(如文本框和组合框)。
借助 Visual Studio中的拖放式 Windows 窗体设计器,可以轻松创建 Windows 窗体应用。 只需用光标选中控件,然后将它们放置到窗体中所需的位置即可。 设计器提供诸如网格线和对齐线的工具,以便简化对齐控件的操作。 可以使用
FlowLayoutPanel、TableLayoutPanel
和
SplitContainer 控件在更短的时间内创建高级窗体布局。
最后,如果必须创建自己的自定义用户界面元素,System.Drawing
命名空间包含各种类,可用以直接在窗体上呈现线条、圆形和其他形状。
3、显示和操纵数据
许多应用必须显示数据库、XML 文件、JSON 文件、Web 服务或其他数据源中的数据。 Windows 窗体提供了一个灵活的控件(名为
DataGridView控件),用于以传统的行和列格式显示此类表格数据,以便使每段数据块均占据其自己的单元格。 使用DataGridView
时,可以自定义各个单元格的外观,将任意行和列锁定在所需位置,在单元格内部显示复杂控件,此外还具有其他功能。
通过网络连接到数据源对于 Windows 窗体而言是一个简单的任务。BindingSource
组件表示与数据源的连接,并公开完成以下操作的方法:将数据绑定到控件、导航到上一个和下一个记录、编辑记录,以及将更改保存回原始源。BindingNavigator
控件通过 BindingSource
组件提供一个简单界面,可供用户在记录间导航。
可以使用 Visual Studio 中的“数据源”窗口轻松创建数据绑定控件。 窗口显示数据源,如数据库、Web 服务和项目中的对象。 可以通过将此窗口中的项拖动到项目中的窗体上来创建数据绑定控件。 还可以通过将对象从“数据源”窗口拖动到现有控件上来将现有控件与数据进行数据绑定。
可在 Windows 窗体中管理的另一类数据绑定是“设置”。 大多数应用均必须保留有关其运行时状态的某些信息(例如窗体的最后已知大小)以及用户首选项数据(例如保存的文件的默认位置)。 “应用程序设置”功能通过提供一种在客户端计算机上存储两种类型的设置的简单方法来满足这些要求。 通过使用 Visual Studio 或代码编辑器定义这些设置后,这些设置便作为 XML保留并自动在运行时读取回内存中。
4、将应用部署到客户端计算机
编写了应用后,必须将应用发送给用户,以便他们可以在自己的客户端计算机上安装和运行此应用。 使用 ClickOnce 技术时,只需进行几次点击便可以从 Visual Studio 内部署应用,然后向用户提供指向 Web 上的应用的 URL。 ClickOnce 可管理应用中的所有元素和依赖项,并确保应用正确安装到客户端计算机上。
ClickOnce 应用可以配置为仅在用户连接到网络时运行,或配置为联机和脱机时均可运行。 如果指定应用支持脱机操作,则 ClickOnce 会在用户的“开始”菜单中添加一个指向应用的链接。 然后用户便可以打开应用,而无需使用此 URL。
如果你更新应用,则会同时向你的 Web 服务器发布一个新的部署清单和应用的一个新副本。 ClickOnce 将检测到有可用更新并将升级用户的安装。 更新旧应用无需进行自定义编程。
相关文章:
【WinForm.NET开发】Windows窗体开发概述
本文内容 介绍为什么要从 .NET Framework 迁移生成丰富的交互式用户界面显示和操纵数据将应用部署到客户端计算机 Windows 窗体是一个可创建适用于 Windows 的丰富桌面客户端应用的 UI 框架。 Windows 窗体开发平台支持广泛的应用开发功能,包括控件、图形、数据绑…...
WPF 简单绘制矩形
Canvas 画矩形: view和viewModel 绑定一起才显示移动轨迹(可以定义一个string 看是否绑定属性的路径是正确的) 前台(绑定事件和显示移动的线): <Canvas Name"canvas" Background"#01FF…...
crui_lvgl 一个LVGL的DSL辅助工具的设想
设想 Target以LVGL为目标,语法以CSS为Reference。 CSS 规范 略 CSS规范最强大的属于CSS自身的属性很多,可以通过class和伪属性选择器对UI进行直接控制。 QML规范 ApplicationWindow {visible: truewidth: Constants.widthheight: Constants.height…...

公共部门生成式人工智能的未来
作者:Dave Erickson 最近,我与 IDC Government Insights 研究副总裁阿德莱德奥布莱恩 (Adelaide O’Brien) 坐下来讨论了全球公共部门生成式人工智能的当前和未来状况。 完整的对话可以按需查看,但我也想强调讨论中的一些要点。 我们的目标是…...

【报名】2023产业区块链生态日暨 FISCO BCOS 开源六周年生态大会
作为2023深圳国际金融科技节系列活动之一,由深圳市地方金融监督管理局指导,微众银行、金链盟主办的“2023产业区块链生态日暨FISCO BCOS开源六周年生态大会”将于12月15日下午14:00在深圳举办。 今年的盛会将进一步升级,以“FISCO BCOS和TA的…...

MySQL之性能分析和系统调优
MySQL之性能分析和系统调优 性能分析 查看执行计划 EXPLAIN EXPLAIN作为MySQL的性能分析神器,可以用来分析SQL执行计划,需要理解分析结果可以帮助我们优化SQL explain select … from … [where ...]TABLE 表名 查询的每一行记录都对于着一张表 id 该…...

时间复杂度为 O(n^2) 的排序算法 | 京东物流技术团队
对于小规模数据,我们可以选用时间复杂度为 O(n2) 的排序算法。因为时间复杂度并不代表实际代码的执行时间,它省去了低阶、系数和常数,仅代表的增长趋势,所以在小规模数据情况下, O(n2) 的排序算法可能会比 O(nlogn) 的…...

关于前端学习的思考-内边距、边框和外边距
从最简单的盒子开始思考 先把实际应用摆出来: margin:居中,控制边距。 padding:控制边距。 border:制作三角形。 盒子分为内容盒子,内边距盒子,边框和外边距。 如果想让块级元素居中&#…...

【linux】/etc/security/limits.conf配置文件详解、为什么限制、常见限制查看操作
文章目录 一. limits.conf常见配置项详解二. 文件描述符(file descriptor)简述三. 为什么限制四. 相关操作1. 展示当前资源限制2. 查看系统当前打开的文件描述符数量3. 查看某个进程打开的文件描述符数量4. 各进程占用的文件描述符 /etc/security/limits…...

Windows系统下更新后自带的画图软件出现马赛克bug
一.bug的样子🍗 在使用橡皮后,原来写的内容会变成马赛克。而我们希望它是纯白色的。 二.解决方法🍗 第一步 第二步 第三步 三. 解决后的效果🍗 用橡皮擦随便擦都不会出现马赛克了。 更新过后,想用win自带的画图软件会出…...

[HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页
希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…...
SQL练习
建数据库: mysql> create database worker; Query OK, 1 row affected (0.00 sec) mysql> CREATE TABLE worker (-> 部门号 int(11) NOT NULL,-> 职工号 int(11) NOT NULL,-> 工作时间 date NOT NULL,-> 工资 float(8,2) NOT NULL,-> 政治面貌…...

创始人于东来:胖东来员工不想上班,请假不允许不批假!
12月2日早晨,一则关于“胖东来员工不想上班请假不允许不批假”的新闻登上了热搜,引起了广泛关注。熟悉胖东来的网友们可能知道,这并不是这家企业第一次成为热搜的焦点。据白鹿视频12月1日报道,11月25日,河南许昌的胖东…...

C++学习之路(十五)C++ 用Qt5实现一个工具箱(增加16进制颜色码转换和屏幕颜色提取功能)- 示例代码拆分讲解
上篇文章,我们用 Qt5 实现了在小工具箱中添加了《Base64图片编码预览功能》功能。为了继续丰富我们的工具箱,今天我们就再增加两个平时经常用到的功能吧,就是「 16进制颜色码转RGB文本 」和 「屏幕颜色提取」功能。下面我们就来看看如何来规划…...

【STM32】EXTI外部中断
1 中断系统 1.1 中断简介 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。 比如&a…...

Linux系统的常见命令十三,显示系统进程状态、文件权限、修改文件或目录所有者和所属组命令(ps、chmod和chown)
本文主要介绍Linux系统的显示系统进程状态、文件权限、修改文件或目录所有者和所属组命令,(ps、chmod和chown) 目录 显示系统进程状态文件权限设置(chmod)修改文件或目录所有者和所属组(chown) …...

Python 批量修改文件名
主要步骤 通过os.listdir查看该文件夹下所有的文件(包括文件夹)遍历所有文件,如果是文件夹则跳过,或指定跳过指定文件获取文件扩展名按照需求生成新的文件路径文件名进行重命名 代码示例 # -*- coding: utf-8 -*- import osdef…...

git的基本命令操作超详细解析教程
Git基础教学 1、初始化配置2、初始化仓库3、工作区域和文件状态4、添加和提交文件5、git reset 回退版本6、git diff查看差异7、删除文件git rm8、.gitignore9、本地文件提交到远程仓库10、分支基础 Git:一个开源的分布式版本控制系统,它可以在本地和远程…...

【代码】两阶段鲁棒优化/微电网经济调度入门到编程
内容包括 matlab-yalmipcplex微电网两阶段鲁棒经济调度(刘) matlab-yalmipcplex两阶段鲁棒微电网容量经济优化调度 两阶段鲁棒优化CCG列于约束生成和Benders代码,可扩展改编,复现自原外文论文 【赠送】虚拟储能单元电动汽车建…...
【图论】重庆大学图论与应用课程期末复习资料2-各章考点(填空证明部分)(私人复习资料)
图论各章考点 一、图与网络的基本概念二、树三、连通性四、路径算法五、匹配六、行遍性问题七、平面图 一、图与网络的基本概念 生成子图:生成子图 G ’ G’ G’中顶点个数V’必须和原图G中V的数量相同,而 E ’ ∈ E E’∈E E’∈E即可。顶点集导出子图…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...