![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C# Winform
文章平均质量分 87
自带的UI控件非常多,使用起来方便,在做大型软件就会开始显现弊端,界面美化也比较难,推荐小型项目使用
熊思宇
游戏程序员的进阶之旅,不断探索、创新,始终坚持对技术的热爱与执着
展开
-
C# Winform 多窗体切换方式一
这种方式,这种方式也存在一些问题,因为 Winform 存在一个主线程概念,如果主线程关闭,那么当前软件所有的窗体都会随之关闭,你也可以使用其他的方式,让界面继续显示,但整体上不是特别的优雅,这里推荐两种方式,1.在 Form1 里面加载用户控件,并实时改变 Form1 界面大小和用户控件保持一致,2.用一个窗体作为主线程启动,启动后隐藏界面,添加一个窗体管理类来实现其他的窗体的关闭和显示,如果最后一个显示的窗体关闭了,就关闭主线程退出程序,本篇文章我就使用第一种方式来实现效果。原创 2024-08-10 10:24:03 · 748 阅读 · 0 评论 -
C# NLua Winform 热更新
NLua 是一个用于 .NET 平台的 Lua 脚本绑定库。它允许在 C# 代码中嵌入 Lua 脚本,并允许两者之间进行交互。NLua 的主要特点包括:轻量级:NLua 是一个轻量级的库,易于集成到现有的 .NET 项目中。动态类型:Lua 是动态类型的语言,这意味着变量的类型可以在运行时改变。灵活的绑定:NLua 提供了灵活的绑定机制,使得 C# 和 Lua 之间的数据交互变得简单原创 2023-12-28 13:41:08 · 1706 阅读 · 0 评论 -
C# Winform 日志系统
控制台输出日志确实很方便,但它同时也有多缺点,比如,在 winform 程序运行后,任务栏会同时两个应用的图标,控制台也算一个单独的程序,如果一个程序在运行也就原创 2023-12-10 14:58:27 · 2732 阅读 · 0 评论 -
C# Winform GDI+ 绘图
Graphics类是GDI+技术的一个基本类。GDI+(Graphics Device Interface)是.NET框架的重要组成部分,提供对二维图形图像和文字排版处理的支持。System.Drawing.Drawing2D: 提供了高级的二维和矢量绘图功能(比如渐变、 图案填充、- 轨迹等)System.Drawing:提供了最基本的绘图功能(比如画直线、矩形、椭圆等);System.Drawing.Printing: 提供与打印相关的服务。System.Drawing.Text: 提供排版功能。原创 2023-03-10 11:24:03 · 9006 阅读 · 6 评论 -
Winform NanUI 相关功能整合
打开NetDimension.NanUI程序集中Resources.Designer.cs,可以看到读取启动界面的本地资源将其所有相关的引用,全部注释。点击运行,一切正常,去掉启动界面,打开网页的速度反而更快了!原创 2022-07-26 11:21:34 · 2737 阅读 · 0 评论 -
Winform NanUI 0.88版本 用官方源码搭建原生态开发环境
NanUI 插件确实很方便,但想改其中的需求怎么办,下面就来自己搭建NanUI 原生开发环境,在此很感谢作者免费的开源。原创 2021-05-10 16:13:48 · 1907 阅读 · 2 评论 -
Winform NanUI 0.77版本 读取本地资源(扩展功能)
在NanUI官方的文档中,是有一个NanUI.FileResourceHandler的扩展包的,但现在只有0.88版本中有一个NanUI.LocalFileResource程序包,而0.77版本只剩下了一个读取嵌入式资源的程序包。参考:https://www.cnblogs.com/linxuanchen/p/the-nanui-0-7-release-notes.html在扩展功能之前,请参考https://zhuanlan.zhihu.com/p/109023019,我参考这个帖子进行扩展.原创 2021-05-05 15:49:40 · 1149 阅读 · 4 评论 -
Winform NanUI 0.77版本 清除Cookie等本地缓存
那么,用另外一种方法,在程序退出的时候,或者在界面加载的时候,删除缓存路径不就行了?这里可以看到,对比0.88版本,多了一个Cache文件夹,直接将其去掉,这样就和0.88版本的路径一样了。知道这个原理,那么我们直接删除这个文件夹可以了吗?参考NanUI0.88源码,可以看到,实现这个功能,是在初始化框架之前,删除了项目的缓存文件夹。那么就会出现,鼠标图标不停的转圈,页面根本加载不出来,页面一片白板。经过测试,Cookie一类的数据,使用JS设置是无法保存的。后面我查了很多的帖子,用下面的方法解决了问题,原创 2021-05-05 17:31:53 · 813 阅读 · 1 评论 -
Winform NanUI 0.77版本 读取嵌入式资源
引入NanUI框架这三个组件都要引入了,NetDimension.NanUI.AssemblyResourceHandler 是属于嵌入式资源部分,原创 2021-04-28 16:23:23 · 584 阅读 · 1 评论 -
Winform NanUI 0.77版本 JS和C#相互调用
这里调用了JS中的两个方法sayHollo,returnValue。在C#代码中,可以调用界面加载完成后的回调,在里面调用JS代码。如果这个帖子对你有用,欢迎关注+点赞+留言,谢谢。用的NanUI版本0.77。原创 2020-11-19 11:30:59 · 1590 阅读 · 6 评论 -
Winform NanUI 0.88版本 JS和C#相互调用
Formium.external.CSharpProject.CallBack(function say(str) { console.log("C#的返回值:" + str);在软件的界面和软件逻辑分离后,最重要的就是要处理参数的传递,和函数的调用,因此存在JS中和C#相互调用的需求。上面这些方法可以在NanUI控制台执行JS。NanUI 版本:0.8.80.191。原创 2021-01-28 14:07:42 · 1369 阅读 · 2 评论 -
C# Winform 热更新 基于ECSharp框架
当然,热更的实现,在各个语言上都是通过运行时反射实现的,所以一旦利用反射原理的功能都会逊色于原生直接调用。以空间换更方便的数值传递操作,可变变量可以满足所有基础类型的变量存储和读取,并且配备列表、字典容器来提供批量存储,同时可以很方便的获取存储后的原始字节数组或序列化的数据,当然也可以重新反序列化成新的对象。你可能会说,自己写个DLL,添加引用后,运行程序中,把DLL替换,不就能实现热更了,我测试过,如下图,不行,DLL已经被占用。对TcpListener进行封装,支持ssl模式,可以完成高并发任务。原创 2022-10-30 00:26:31 · 4663 阅读 · 0 评论 -
C# Winform DataGridView 数据刷新问题
DataGridView 是比较常用的表格控件,在 DataGridView 中显示数据, 一般使用 dataGridView1.DataSource = 数据源,来绑定数据,数据源可以是 DataTable、List、Dictionary 等,那么如何做到及时刷新数据呢,这里我提出几个问题:1.绑定一个空的数据源,后面向数据源添加数据。2.DataGridView 绑定一个有数据的数据源,后面再向数据源添加数据。3.将数据源的某一行,某一列的数据修改为其他的数据。4.删除数据源的某一列。原创 2023-08-11 21:29:02 · 13491 阅读 · 0 评论 -
C# Winform DataGridView 控件和 DataTable
DataGridView 控件提供用于显示数据的可自定义表。类 DataGridView 允许通过使用属性(如 DefaultCellStyle、 ColumnHeadersDefaultCellStyle、 CellBorderStyle和)自定义单元格、行、列和 GridColor边框。有关详细信息,请参阅微软 DataGridView 控件中的基本格式设置和样式设置。可以使用 DataGridView 控件在基础数据源中或不使用基础数据源显示数据。原创 2023-06-27 19:14:42 · 15725 阅读 · 3 评论 -
C# Winform Button 控件
Button 控件是 Winform 开发中最常用的一个控件,即按钮控件,一般用做点击事件的触发。原创 2023-06-21 11:09:41 · 7074 阅读 · 0 评论 -
C# Winform Label 控件
Label 控件是 winform 开发中最常用的一个控件,一般用做显示文本,也有时用做打开链接等操作。原创 2023-06-21 09:20:03 · 5876 阅读 · 0 评论 -
C# 自动更新(基于FTP)
在去年,我写了一个 C# 版本的自动更新,这个是根据配置文件 + 网站文件等组成的框架,以实现本地文件的新增、替换和删除,虽然实现了自动更新的功能,但用起来过于复杂,代码量也比较大,改起来困难,后面我就想能不能弄一个 FTP 服务器进行版本的更新。原创 2023-06-16 11:46:41 · 7598 阅读 · 30 评论 -
C# Winform 多个程序之间的通信(非Scoket)
C# Winfrom程序之间通讯_c# sendmessege copydatastruct 返回多个值_在之前我写过 winform 程序与程序之间的通信,但是这个版本有个问题,那就是只能由两个程序进行通信,同时打开多个程序的话,接收方收到的数据就会一模一样,这次发表这个教程,也就是要解决这个问题。归根结底,还是FindWindow这个函数的用法没用对,下面是对应的解释:函数获得一个顶层窗体的句柄,该窗体的类名和窗体名与给定的字符串相匹配。这个函数不查找子窗体。原创 2023-06-10 16:02:42 · 2701 阅读 · 3 评论 -
C# Winform 三层架构
三层架构是 C# 桌面开发中比较常用的框架,是由 表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构组成,目的是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。原创 2022-12-20 10:58:02 · 16834 阅读 · 11 评论 -
C# Winform 文本面板带滚动条
Regex.Split 是根据换行符号,来分割 json ,得到 json 的总行数,以便确定 Panel 的行高,得到行高后,就能确定大概的高度了,后面通过 Size 的调整,就能根据文本的内容,来确定大概的行高了。在PC软件开发中经常有这样的需求,需要在一个固定大小的面板中显示一些内容,并且面板能上下拖动,将所有的内容完整的展示,有点类似网页上看新闻,如果要在 winfrom 中要如何实现的呢,下面就演示如何实现的吧。随便打一点字,运行后,用鼠标中轮滚动,就能看到滚动效果了。原创 2022-12-03 10:01:13 · 11171 阅读 · 0 评论 -
C# Winfrom 常用功能整合-2
在我们常用的一些软件中,经常有些软件,双击之后根本打不开,这是因为启动时做了限制,我们需要传入一些参数才能打开,在工作中,这个需求也可以用在软件的自动更新上,在Unity里,有XLua,ILruntime等框架进行热更新,在Winform中,由于Windows的机制,打开软件后,不能做文件替换工作,我们可以利用一个软件启动器,更新本地软件的文件,然后再启动软件,就达到了自动更新的目的,当然,软件本地也不能直接双击打开。新建一个winform项目,界面如下,用来做一个软件启动器。...............原创 2022-07-26 16:01:11 · 1796 阅读 · 1 评论 -
C# Winfrom 常用功能整合-1
在打开最大化窗体时,如果不进行配置,那么默认情况下窗体是被任务栏档住,导致有部分界面看不见,看看下面代码的效果,也许对你有帮助新建一个Winform项目,添加三个按钮,给三个按钮添加点击事件效果点击按钮1,会最大化,但窗体不会遮挡任务栏,点击按钮2,会全屏显示,点击按钮3,会最大化,但窗体不会遮挡任务栏。........................原创 2022-07-26 10:06:28 · 2173 阅读 · 3 评论 -
C# Winfrom 右键菜单
拖入一张图片控件,其他的控件也行,再拖入一个 ContextMenuStrip 控件在 ContextMenuStrip 控件里添加两个菜单点击图片控件,在属性行为中找到 ContextMenuStrip 选项选择刚刚创建的菜单 ContextMenuStrip 控件,这里的控件名是自定义的在视图界面上,对菜单1,菜单2 选项双击,会自动生成点击事件。点击菜单2,在属性窗口也可以看到具体设置 ,比如,菜单2的点击事件在Form1中,就随意加点代码吧将输出类型改为控制台输出 点击右键点击菜单1,就可以原创 2022-07-13 10:52:04 · 7547 阅读 · 0 评论 -
C# Winfrom Chart 图表控件 柱状图、折线图
新建一个.NET Framework 类型的 Winfrom 项目,在数据里面找到 Chart 控件,拖入到界面中如下: 此时,默认的有一个图表的样式,实际运行却什么都没有 修改图表样式在Series这里,点击集合后面到三个点 这里可以修改标记的名字这里修改图表到样式 绑定数据此时图表还没有任何数据,可以用绑定方式添加数据,如下 运行后如下..................................................................................原创 2022-06-29 09:08:28 · 25698 阅读 · 15 评论 -
C# Winform 重写进度条 ProgressBar
效果: Winfrom各种老毛病真的不适合做大型项目,甚至中型项目都不适合,一些小功能都能把你折腾半死,有时候真要崩溃,比如,我想在界面上显示一个进度条,用来显示现在硬盘和内存已经使用了多少,使用了ProgressBar你看看效果我本来只是用来显示一下内存和硬盘到大小,你看,进度条中间一直有个光影在移动,给人到印象特别奇怪,搞不懂你这是在表达什么,好像要下载又不是下载。于是我在网上找了一些资料,有到效果有,但不是特别漂亮,比如下面这个C# WinForm 自定义进度条控件_科技_品阅网另外,我参考了下面到帖原创 2022-06-23 13:41:34 · 7908 阅读 · 5 评论 -
C# Winform 相册功能,图片缩放,拖拽,预览图分页
效果1.添加图片,分页功能2.图片放大,缩小,拖拽功能在很多项目中也需要用到预览图片的功能,至于为什么加一个添加图片的功能,是因为,有些项目,比如视觉相关的工作,会需要摄像机采集图片,然后显示出来,所有,图片也是一张一张的添加的,第二个,就是分页功能,如果需要查看过去的照片时会用到,所以我也加了进来。当前软件的使用方法:1.添加图片如果8个预览图都满了,会自动分页,就可以点击上一页,或者下一页了。2.点击预览图显示大图点击预览图,之前的拖拽和放大会自动复位3.大图可以拖拽,放大,缩小如果图片比较小,有这个功原创 2022-06-21 17:55:20 · 8961 阅读 · 10 评论 -
C# Winform SplitContainer组件创建侧边菜单
新建一个 Winform 项目,在Form1中拖进一个 SplitContainer 组件默认的界面如下这时候,你会发现,左侧菜单栏的宽度也太宽了吧,按照以前的经验,你一定会用鼠标去拖拽,这时候你就会发现,鼠标根本拖不动,不信你可以试试这时候,我们按Esc键,鼠标再移动到边框的时候,鼠标图标就会变成一个 “+” 状的图标,这时候就可以拖拽了此时,左侧的Panel1内还没有任何组件,运行后的效果我们添加一个按钮到 Panel1 试试运行后发现,Panel1原来是有边框的,现在一片空白我们给 Panel1 添加原创 2022-06-17 12:05:29 · 6104 阅读 · 1 评论 -
C# Winform自动更新
在Unity里面,有XLua,ILRuntime 这样的热更新框架,Unity和Winform不同之处是,Unity生成的项目,哪怕是Windows平台,根本不必关闭程序才能进行更新,但是Winform项目必须关闭程序才进行下载替换,在Winform平台目前还没看到什么好的开源框架,于是我自己动手写了一个效果如下:客户端自动更新方法大概如下面几条,最少需要做三个软件1.更新文件列表生成器2.软件启动器3.软件本体(只能由软件启动器 打开)软件启动入口可以加密码,防止用户随意打开我们知道,在原有基础上更新文件原创 2022-06-13 01:36:58 · 12804 阅读 · 10 评论 -
C# System.Windows.Forms.DataVisualization Demo案例
一、新建一个 Winfrom 项目WPF 其实也可以用,写法差不了太多,这里用 Winfrom 作为演示。引入 System.Windows.Forms.DataVisualization DLL二、界面和代码下面是运行后的样子另外还加了一个定时器Form1.csusing System;using System.Drawing;using System.Windows.Forms;using System.Windows.Forms.Dat.原创 2022-04-22 16:14:59 · 6087 阅读 · 3 评论 -
C# Winform 配置文件App.config
在C#中,配置文件很常用,ASP.NET 和 Winform 名称不同,用法一样,如下图config 文件通常用来存储一些需要修改的数据,比如用户名密码,连接数据库的IP地址等,而不是在代码中写死。有人可能会问,那我自己自定义一个配置文件也行,为什么要用它这个?区别当然有,微软自己封装的读取和写入会更简单一些,你自己封装的,就要自己去封装测试,但最终的效果其实是一样的。原创 2021-02-04 09:32:28 · 12218 阅读 · 2 评论 -
C# Winform 定时清理日志
在 Winform 开发中经常有这样的需求,在用户执行一些操作不正确时,需要将错误信息反馈给用户,比如:登录密码不正确,无法连接到服务器等,一般常见的用法有两个:1.弹框使用 MessageBox.Show("密码错误");这样的方式,弹框后,用户必须点击确定后才能执行下一步操作,给用户的体验并不是特别好。2.在界面中显示错误信息,定时清除如果是输入框,直接用 ErrorProvider 控件就行了。原创 2020-12-29 10:39:33 · 2425 阅读 · 1 评论 -
C# Winform ListView用法
添加标题在 Winfrom 界面中添加一个 ListView 组件,然后点击右上角的箭头,点击编辑列添加下面标题此时 ListView 还不能显示这些标题,在视图这里选择 Details就会如下图所示显示网格此时,表格只是一片空白,可以在属性面板中设置,显示网格,如下图这时,就如下图所示添加数据到表格中从网上帖子中复制了一段代码private void Button_Test_Click(object sender........原创 2022-02-19 15:17:34 · 12761 阅读 · 10 评论 -
C# Winfrom程序之间通讯
其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。下面的 Demo 是基于 .NET Framework 框架写的,经测试有效,但在最新的 .Net6 框架中,下面的代码无法收到消息,具体原因还不太清楚,有知道的大佬,欢迎留言告诉我。经过测试,发送消息,和接收消息都是正常可以使用的,但是WndProc这个方法只能运行在winfrom项目中,这也是个缺点。原创 2021-05-29 10:23:51 · 2777 阅读 · 13 评论