自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

故里2130

记录的越多,忘记的越少。有问题,请私信我。----故里2130

  • 博客(166)
  • 资源 (9)
  • 收藏
  • 关注

原创 全栈开发小作品展示(有声音)

不积跬步,无以至千里;不积小流,无以成江海。

2023-03-18 15:06:03 249 1

原创 基于.net6的WPF程序使用SignalR进行通信

今天写一篇关于CS客户端的SignalR通信,后台服务使用.net6api。其实和之前写的差不多,主要在于服务端以后台进程的方式存在,而客户端以exe方式存在,其实代码都一样,只是生成的方式不一样。此时,后台的服务以进行的方式存在,然后可以和客户端进行通信,其实和之前写的是一样的,只是生成方式不同而已。之前写的SignalR通信,是基于.net6api,BS和CS进行通信的。当然IP和端口都可以修改的,也可以增加网页显示,根据业务而定。运行后,服务是以进程的方式存在。选择Windows应用程序。

2023-07-18 23:32:41 1144

原创 .net6中WPF的串口通信和USB通信

目前只是查询出来4个USB设备,但是对USB进行发送和接收信息,还有报错。这个似乎需要和硬件通信协议和数据传输规范有关系,否则好像成功不了,也不清楚可不可以使用虚拟的USB,类似于COM虚拟口一样操作,暂时这么记录吧。今天说一下,.net6中wpf的串口通信和USB通信,在工控行业中,这2种的方式非常多,还有网口通信,它们都是用来和硬件打交道的,进行交互信息。之前写过串口通信,不过是winform的。2.基本上代码都是一样的,xaml界面。一个写1端口,一个写2端口,进行通信。2.操作USB有2种方式。

2023-07-16 22:15:01 650 2

原创 c#使用ThreadPool

说到ThreadPool,都知道是线程池。从时间上来排序,大概是这样的,Thread,backgroundworker,ThreadPool,Parallel,Task。其中后面2种是最新的,之前的很少使用,如果是老项目,基本上前面用的多,而新项目,最好使用后面的2种,因为后面的效率以及各方面控制更加的容易上手,需要开发者考虑的问题,也更加的少,使用起来简单方便。1.其中WaitCallback是一个带有参数的方法,所以上面案例,需要传递一个object对象,可见,属于多次一举,但是规定就是这样的。

2023-07-16 17:41:20 633

原创 记录C#知识点(二)21-40

注意:当计算机登录用户已经是管理员的话,那么exe就不会出现盾牌。即使把生成带有盾牌的exe,复制过去,也不会带有盾牌。此问题是Windows7缺少了系统更新的文件,使用腾讯电脑管家,进行更新即可,或者其他系统更新软件。会看到一个带有盾牌的exe,就是已经增加了管理员权限的程序。会看到一个带有盾牌的exe,就是已经增加了管理员权限的程序。5.继承,能少用就少用,代码简洁了,但是效率低。1.建立1.bat,demo是要关闭的进程。2.生成前事件命令行,注意目录的路径。4. 重新生成,查看生成目录。

2023-07-16 15:56:23 725

原创 行为型模式-策略模式(一)

此文,只是为了策略模式而策略模式,设计模式在日常的开发代码中,很少使用,比如以上案例,使用设计模式,就太复杂了, 根本没必要使用。但是在用到的时候,将会非常的给力,大部分都是后期业务堆起来后,才会体现出设计模式优点,当然使用了设计模式,也有缺点,一切的一切,都按照当下的业务量来衡量,是否有必要使用设计模式。今天就说一说设计模式中的策略模式,从名字来讲,意思就是,对应不同的情况,就有一种解决问题的办法,不同的情况,就有不同的应对方法,这就是策略模式,非常的智能化。可见,调用只需要一句话。

2023-07-04 01:09:33 380

原创 wpf增加系统托盘图标

2. 因为NotifyIcon是winform中的控件,所以只能在cs文件中增加代码。第一种,使用Hardcodet.NotifyIcon.Wpf开源组件。1.同样建立一个程序,但是图标要修改成嵌入的资源,否则获取不到路径。第二种,使用winform中带的控件,NotifyIcon。2种方式,任意一种都可以,第一种更加的灵活,方便一些。使用系统托盘,可以为用户提供一个简便快捷的操作习惯。其中此处可以重写MenuItem的样式,以及其他事件。wpf中增加系统托盘图标有2种。图片选择资源,否则获取不到路径。

2023-06-24 23:08:49 827

原创 WPF本地化/国际化,多语言切换

有很多种,可以使用自带的资源去做,就是使用xaml写key值,这种做法是最简单方便的,也是wpf独特使用的,如果有大量的翻译,那么需要人工去翻译,需要转折一次,此种方法就不说了。基本的技术差不多,但是后来又发现了一个ResXManager工具,可以更好方便快捷的使用。增加后,双击增加的语种,就会自动生成对应的.resx文件,想要多少种语言,就可以增加多少种。此处,可以导出Excel,让别人翻译,然后再导入,也可以使用在线翻译的功能,点击翻译。首先下载,网络不好的话,去官网下载,然后安装,重启vs即可。

2023-06-24 17:52:57 1434 3

原创 .NET6创建Windows服务

现在已经2023年了,其中vs2022有新的方法去创建Windows服务,本次使用.NET6创建Windows服务。7.实际情况,我们肯定不是这么使用,但是这样调试肯定是可以的,接下来,我们安装此服务,变成Windows服务的样子,首选先进行发布。10.现在就和正常的服务一样了,有开始,有停止,操作后,然后打开日志。5.服务里面写启动,停止,以及执行任务,Worker.cs中写。这里注意版本,选择的是net6,好像只能安装6版本的。里面的业务就是,检测启动,停止,每次执行任务都输出。2.创建完成是这样的。

2023-06-18 22:40:35 2458 1

原创 wpf中使用svg图片

在wpf中,svg图片不能直接使用,但是我们知道,svg图片比png,jpg等图片都好点,原因就是它是矢量图片,不会变形。这种可以解决复杂的问题,但是在编译界面中,也就是在xaml文件中,是不显示svg图片的,只有在运行的时候,才能显示。综上所述,从操作简单,功能最全来说,建议使用第四种,最起码图片转成xaml,不用复制了。使用SharpVectors开源的库,在nuget中,直接下载使用。2.拿到xaml中的内容,放到资源文件中,取名为abc。注意:图片的路径,以及增加资源中,否则显示不出来。

2023-06-05 23:06:04 1284

原创 winform中DataGridView增加按钮可禁用,TreeView绑定图标

在DataGridView中,增加按钮,这个很简单,但是按钮禁用,有点麻烦,因为DataGridView中的按钮没有禁用功能,和普通的按钮不一样,查询资料可知下面:官网地址对于以上代码,进行封装了和改造,使得代码量更加的少。后面发源码。主要就是创建DataGridViewDisableButtonColumn。注意的地方:增加的列,和DataTable赋值的列的顺序不一样,所以在获取DataGridView的数据时,需要注意,否则拿不到值。

2023-06-01 00:33:49 760

原创 IIS发布.net6 api+微信小程序/H5真机调试接口的流程

我们创建.net6 api程序,然后使用SqlSugar连接MySQL数据库,再使用iis发布,当然使用其他的也行。再开发一个微信小程序,手机运行小程序,手机运行H5,都可以看到数据库的数据,就是这么一个流程。开始!

2023-03-13 09:53:47 1461

原创 在vue3中Element Plus切换主题

一共2种方法。

2023-03-06 16:27:36 2430

原创 vue3中前端处理不同数据结构的JSON

有时候,后端返回的JSON数据格式,是前端不需要的格式类型,这时,要么让后端修改,你要什么格式,那么让后端大哥哥给你返回什么格式。但是有时候不尽人意,后端大哥哥让你自己转换,此时就甩给前端了,只能在前端自己处理了。

2023-03-03 15:15:43 2963

原创 uniapp学习记录

宽度自适应大小使用rpx,全屏宽度使用100%,uniapp默认设计稿是750(工具-》设置》编辑器配置)在vue3的setup语法中,使用onLoad,onShow这些函数时要引入。不要把pages中的页面配置到tabBar中,那么首页就不显示tabBar。2.uni.navigateTo():跳转到某一个界面中。1.navigator:只能跳转本地页面,目标页面。全局使用的时,在App.vue中使用。在pages.json中注册,否则跳转报错。在uni.scss中定义颜色。2.放入文件,选择ttf。

2023-02-24 15:11:59 173

原创 uniapp中调用.net6 webapi

使用uniapp开发程序时,不管是小程序,还是H5界面,它们只是一个显示界面,也就是只充当前台界面,那么我们后台使用.net6 webapi写业务逻辑,然后前端访问后端,即可实现前后端分离开发软件的模式。下面使用.net6 webapi作为后端,uniapp作为前端,实现简单的数据显示的功能。

2023-02-24 15:04:18 822 2

原创 .NET6中使用GRPC详细描述

官网。至于原理就不说了,可以百度原理之后,然后再结合代码,事半功倍,就能很好理解GRPC了。

2023-02-21 17:39:03 1062 1

原创 如何开发微信小程序呢

H5程序:H5是其实就是一个网页,不过它既能运行在手机端,也能运行在PC端,都可以独立运行,可以形如网页程序,也可以形如小程序,开发H5,可以使用HBuilder X一次性开发,然后生成多个端的程序,意思就是一套代码,生成多个客户端的运行程序,不过,这样也有很多麻烦,优点就是开发速度快了,但是把一些功能集中在一起,显得臃肿,我还是喜欢,专业的事情交给专业的人干。这里注意一下,可以选择微信云开发,也可以不使用云服务,微信云开发,一切都帮你整理好了,数据库+运维的事,都搞好了,非常便捷。

2023-02-20 23:36:29 408

原创 使用NutUI创建小程序和H5界面

做开发的时间长了,技术都是通用的,创建小程序和H5界面有很多的UI,本章节演示使用NutUI来创建,官网,4. 在uni.scss文件引入variables.scss,全局样式变量,可以自定义主题颜色。5.App.vue文件引入app.scss,包含一些需要全局覆盖的样式。1.使用HBuilder X创建一个uni-app的程序,如图所示。此时,打开dcloud市场,或者点击上面 去搜索 按钮。如图所示,微信反应比较慢,报错的话,关闭重新打开。2. 安装UniNutUI。如图所示,点击导入插件。

2023-02-19 00:50:33 1104 2

原创 使用uniapp创建小程序和H5界面

补充:其中uni-ui是基础组件的补充组件,所以分2部分,其实都是一回事,如果创建的是uni-ui项目模板,那么就可以一起使用,不用引用了,否则,就要单独去引用,和PC页面同理。uniapp的介绍可以看官网,接下来我们使用uniapp创建小程序和H5界面,其他小程序也是可以的,只演示创建这2个,其实都是一套代码,只是生成的方式不一样而已。这里说的UI控件,就是类似于ElementPlus一样,自带的控件是uni开头的,我们也可以叫它原生UI,网站可以查看具体组件的用法,选择如图所示,下面选择Vue3。

2023-02-18 21:48:30 4133 1

原创 手机/移动端的UI框架-Vant和NutUI

下面推荐2款手机/移动端的UI框架。其实还有很多的框架,各个大厂都有UI框架。目前,找来找去,只有腾讯的移动端是setup语法写的,其他大厂,虽然都是VUE3写的,但是都还未改成setup的语法,而且,腾讯的版本也比较新,所以暂时不做案例了。我们使用成熟的UI框架Vant和NutUI来演示。其中京东的NutUI组件,还有小程序组件。

2023-02-18 00:20:07 2217 2

原创 .net6API使用AutoMapper和DTO

通俗的来说,DTO就是前端界面需要用的数据结构和类型,而我们经常使用的数据实体,是数据库需要用的数据结构和类型,它们2者负责的方向不一样,经常需要进行转化,那么此时AutoMapper就是一个转换工具,它可以对数据实体和前端界面的数据进行转换,反之,也可以,这样就加大了转换的效率,如果不用AutoMapper时,我们需要自己手写转换,AutoMapper的目的就是提高转换效率,不用写更多的判断代码了。此文件最重要,里面都是对实体类和DTO进行配置的,相互转换的。dto里面的字段,就是前端需要显示的字段。

2023-02-16 17:14:00 893

原创 响应式布局之viewport-超级简单

多的就不说了,但是要补充一点,最重要的是: 使用vite创建和官网不一样,不需要创建postcss.config.js,直接在vite.config.js中创建就行了,或者创建postcss.config.js后,必须在vite.config.js中引用。上面的文章可以实现响应式布局,根据浏览器的大小变化而变化,但是相对于viewport来说,之前的还是有点复杂,而使用viewport更加的简单。那么代码的大小,就是实际的大小,必须这里的400px,600px。1600px的电脑效果,宽度响应式变小了。

2023-02-13 17:34:19 843

原创 CSS/SCSS/LESS和自适应布局/响应式布局详解

在开发前端的时候,界面布局尤为重要,要布局的非常合理,好看,css是必不可少的,然后是各种布局,使用这些布局,进行混合搭配,最终的目的都是开发一个完整的界面。前端的技术变化是五花八门的,也是群魔乱舞的,使用的方法更是层出不穷。所以本文收集了一些个人的观点,并且进行记录。好的布局不是一下能学会的,是需要大量的实战经验,上手很快,但是精通需要一定的时间才行。

2023-02-13 00:13:45 1190

原创 .net6API使用SignalR+vue3聊天+WPF聊天

此案例分为3部分。首先创建.net6api接口,然后使用前端vue3进行聊天,再使用wpf客户端进行聊天,并且互通聊天。

2023-02-09 23:58:08 1357 1

原创 .net6Api返回统一结果+Vue3前端访问

在我们开发api的时候,需要让接口返回统一的接口,这样容易理解,也容易管理。所以封装返回的统一结果是非常必要的。下面介绍3种方案。

2023-02-03 11:18:24 909 1

原创 .net6Api后台+VUE3前端实现上传和下载文件全过程

6.Swagger就不用测试了,我们使用postman来测试一下上传的接口。在博主的基础上,增加了新的功能,代码中有注明,并且使用VUE3前端实现。最后选择form-data,点击发送按钮,就会看到返回的路径了。点击上传3张图片,再点击确定按钮,可以看到下面有返回图片的大小。直接点击下载按钮,就会看到内置路径的文件,就会自动下载。1.首先使用HBuilder X建立一个可运行的界面。4.Program文件中,进行配置和跨域的处理。此时api中也就有了图片,1是文件夹的路径。再选择content-type。

2023-01-17 23:26:45 2053

原创 .net6 Web Api使用JWT-从后端到前端全部过程

然后在具体的方法上面,增加角色,也就是只有admin才能访问这个方法,其他用户不能访问,就是200,其他用户访问就是401,当然这是在postman里面操作的。也可以把Token的值放在Headers中,增加Authorization,还需要加bearer,后面加空格。当我们把字符串复制到JWT官网,就可以是明文的,所以千万不要写账号和密码,如果要写,就再加密一层。7.关键时刻,此时建立一个User类,再建立一个Login方法增加,并且增加[Authorize]。实际项目肯定不能直接写死。

2023-01-13 17:34:34 1915

原创 c#使用配置文件

在我们开发软件的时候,有时候有很多的配置文件,可以把配置的参数保存到本地,那么肯定要对文件进行读和写的操作,使用SharpConfig可以很简单的实现这个功能。而且设置值和修改值的时候, 有多种方式都可以做到,总体来说,还是很不错的,值得推荐使用。其中#开头的是注释内容,[]开头的目录,下面的具体值,就是key和value。3.在根目录中建立test.ini,其实别的后缀名文件也可以。每次修改值和增加值的时候,一定要保存文件,否则不会有效果。对于官网的介绍其实更加的丰富,也可以直接存对象。

2023-01-11 11:17:35 3020 1

原创 使用Electron创建桌面程序,从创建到打包

在桌面程序中,使用C#语言可以创建winform和WPF程序,他们2个在Windows中都非常的优秀,还有就是使用QT开发桌面,可以跨平台开发,这三种都是比较“正规”的,而Electron是使用框架开发桌面程序的,还有其他的框架也可以开发桌面程序等等。下面介绍一下Electron开发桌面程序,只要会使用vue,那么使用Electron也非常的简单。第一个文件就是使用node包,第二和第三都是配置文件,这个和创建vue程序是一样的。并且在红色的部分增加命令,表示启动的时候访问electron。

2023-01-11 00:03:17 672

原创 VUE3中,使用Axios

axios是前后端数据交互的重要桥梁,理论和概念这里不再叙述了。可以看看官网。本例子,从简单到难,从初级使用,到高级封装。1.废话少说,先使用HBuilder X建立一个能运行的项目2.安装axios使用如下命令安装安装成功后3. 建立文件夹和文件,如图所示4.demoAxios.js中的代码,其他的选项可以自己增加5.使用在vue界面中,先导入,然后直接写api地址,其中api已经写好了。HelloWorld.vue代码,其中没用的代码已经删除了6.运行后,效果至此,简单的使用就完成了。

2023-01-06 16:15:49 5711

原创 VUE3中,使用.env.development和.env.production

在实际项目开发过程中,可能开发环境和生产(测试)环境不一样,经常需要修改配置常量,才能满足对应的环境,才能使软件运行起来。6.此时,我这里使用nginx进行发布,当然你也可以使用别的发布网址,比如IIS等等。4.打包后,之前的config.js就没有了,复制所有的打包文件。nginx的配置,之前文档已经介绍了,这里不再说明。5.选择build,生成生产模式,程序就在dist中。1.打包前,在项目的根目录中,创建config.js。部署完成后,直接打开,我这里是808端口。开头,否则无法识别,如图所示。

2023-01-05 14:06:49 2857

原创 VUE3-路由《七》

路由就是点击链接或者按钮,进行跳转另一个界面中。在vue中一般使用vue-router来完成路由的操作。4.建立一个文件夹store,再建立一个router.js文件,进行路由配置。为了美观,我们安装element-plus,这里不再演示。其中DemoMain是主界面的代码,也是最关键的。安装完成后,在package.json中可以看到。下面我们进行路由的跳转和嵌套路由的实例操作。1.首先建立一个正常的运行程序。2. 安装vue-router。3.首先我们创建6个vue文件。使用下面的命令,安装路由。

2022-12-28 00:37:33 687 4

原创 VUE3-生命周期钩子《六》

生命周期的作用,页面加载的时候,主动执行某些程序。生命周期钩子有很多种,每一种都是有顺序的,如果不按照顺序执行的话,那么就不会触发某种效果,所以先要了解生命周期钩子函数的顺序。以下是官网提供的生命周期图示其中说2个主要使用的生命周期钩子,onMounted和onUpdated官网也有其他生命周期钩子介绍。

2022-12-27 14:14:15 1134

原创 VUE3-计算属性和监听器《五》

在vue3种,当界面上需要处理一些数据的时候,可以通过计算属性和监听器处理,他们都是对一个属性进行操作的,然后返回数据。他们的区别是,计算属性,是通过一开始的初始值进行计算,或者调用某一个方法后,进行计算返回的值,而监听器,是根据界面的数据的变化而变化的时候,进行监听后计算返回的值。

2022-12-25 23:26:56 986

原创 VUE3-组件之间传值《四》

组件之间的传值,分为3种方式。

2022-12-21 16:38:31 3049 1

原创 VUE3-Pinia的使用《三》

主要用于状态管理,管理全局的变量,也可以存储页面A的值,然后在页面B中直接访问,不分父子组件之间的关系,可以任意传值,非常的灵活。为了持久化缓存,不会因刷新界面而导致数据清空的问题,需要安装pinia-plugin-persistedstate,很多人没有安装,所以会导致刷新后,没有存储上数据。6.此时,我们打开谷歌浏览器,然后按F12,如果安装了vue devtools,选择VUE即可。如果我们刷新界面,counter值自动增加,其他的值,并不会变化,这样其实就成功了。和上面一样,输入命令进行安装。

2022-12-21 14:34:42 1312 1

原创 VUE3-模板语法《二》

首先看到这张图,左边的结构就不分析了,上一章有说明顺序。中间红色的部分,分为3块,第一块是模板,里面写html;第二块是脚本语言,里面写js或者ts语言,lang="ts"就是ts语法,setup就是vue3中独有的一份,需要注意写法,否则会报错;第三块是html的样式,scoped只在当前区域有效果。这3块可以任意排列,根据你的习惯而定,既然是模板语法,那么重点就是template里面,在template里面写代码,和html写的代码效果是一样的,只是一种语法糖。

2022-12-20 23:01:30 468

原创 VUE3-创建项目《一》

2.了解Node和NPM,node是vue的开发环境,npm是依赖管理包,npm就和Java的maven一样,和c#的NuGet一样,都是管理包的工具。2选1都可以,然后选择市面上的前端开发工具,VScode或者HBuilderX,本文以后选择使用HBuilderX,因为我感觉比较轻量级。3.打包工具,webpack和vue/cli,都是对整个web程序进行打包的,二选一即可,一般使用自带的vue/cli打包。一是:直接引入vue.js文件,就是在官网下载好文件,然后对文件进行引入。

2022-12-19 22:36:54 556

原创 winform中使用SqlSugar和SQLite

winform虽然是老古董了,但是在开发桌面方面,还是得心应手的,比如开发一个小工具,小demo之类的。接下来,我们使用SqlSugar和SQLite数据库,在winform中运用。2.安装 System.Data.SQLite,版本1.0.116。4.增加SqlSugarHelper,关联1.db数据库。1.我们可以使用Navicat,直接创建数据库。5.在界面上面放一个按钮,在按钮下面写代码。7.使用实体类查询,首先要建立一个实体类。然后下面关联上1.db数据库。6.代码,使用sql语句查询。

2022-12-17 22:39:57 2432

SignalRWPFSignalRWPFSignalRWPFSignalRWPFSignalRWPF

SignalRWPFSignalRWPFSignalRWPF

2023-07-18

串口和USB,串口和USB,串口和USB

串口和USB串口和USB串口和USB

2023-07-16

策略模式,策略模式,策略模式

策略模式

2023-07-04

多语言转换,多语言转换

多语言转换

2023-06-24

SharpVectors-Converter1.0

SharpVectors_Converter1.0

2023-06-05

winform的treeView1和dataGridView1

winform的treeView1和dataGridView1

2023-06-01

依赖属性+附加属性,依赖属性+附加属性

依赖属性+附加属性,依赖属性+附加属性

2023-05-28

在vue3中Element Plus暗黑模式切换

在vue3中Element Plus暗黑模式切换

2023-03-06

AutoMapper,AutoMapper,AutoMapper

AutoMapper

2023-02-16

vue3ElementPlus,vue3ElementPlus

vue3ElementPlus,vue3ElementPlus

2023-02-11

net6ApiJWT,net6ApiJWT

net6ApiJWT

2023-01-14

vue3路由使用,vue3路由使用

vue3路由使用,vue3路由使用

2022-12-28

vue devtools6.4.5版本

vue devtools6.4.5版本

2022-12-20

wpf使用ValidationRule数据验证

wpf使用ValidationRule数据验证

2022-09-14

Movicon的demo

Movicon的demo

2022-07-25

DevExpressLocalizedResources_2022.1_zh-CN.exe

DevExpressLocalizedResources_2022.1_zh-CN.exe

2022-07-08

演示的源码MQtt,演示的源码MQtt

演示的源码MQtt

2022-07-07

WPFPrism-发布订阅,WPFPrism-发布订阅

WPFPrism-发布订阅

2022-05-27

prism对话服务,prism对话服务

prism对话服务

2022-05-27

WPFPrism导航功能

WPFPrism导航功能

2022-05-27

WPFPrism模块化

WPFPrism模块化

2022-05-27

WPFPrism框架学习

WPFPrism框架学习

2022-05-26

winform等待加载框

winform等待加载框

2022-05-06

c#百度OCR图片识别

百度OCR图片识别

2022-04-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除