Dotnet Article
文章平均质量分 86
dotnet 跨平台知识
爱编程的鼠鼠
在这里你可以谈微软.NET;Mono的跨平台开发技术,也可以谈谈其他的跨平台技术.;;在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux主流平台
展开
-
C# Winform DataGridView 控件和 DataTable
DataGridView 控件提供用于显示数据的可自定义表。类 DataGridView 允许通过使用属性(如 DefaultCellStyle、 ColumnHeadersDefaultCellStyle、 CellBorderStyle和)自定义单元格、行、列和 GridColor边框。有关详细信息,请参阅微软 DataGridView 控件中的基本格式设置和样式设置。可以使用 DataGridView 控件在基础数据源中或不使用基础数据源显示数据。原创 2024-01-30 09:33:40 · 1095 阅读 · 0 评论 -
C# Winform Button 控件
Button 控件是 Winform 开发中最常用的一个控件,即按钮控件,一般用做点击事件的触发。原创 2024-01-30 09:33:06 · 771 阅读 · 0 评论 -
C# Winform Label 控件
Label 控件是 winform 开发中最常用的一个控件,一般用做显示文本,也有时用做打开链接等操作。Label 在默认设置的情况下,控件会根据文字的内容自动调整大小的,如下这里有个缺点, 就是文字会单行、无限的向右边延长,如果你想多行显示文本,就必须修改一些属性才能做到。我们在属性界面中找到 布局-AutoSize,将其设置成 false。这时候,控件的大小就能调整了我们可以直接在属性中进行修改界面显示如下这时候,再输入一些乱七八糟的文字进去,就会自动换行了。原创 2024-01-30 09:32:35 · 67 阅读 · 0 评论 -
C# 自动更新(基于FTP)
在去年,我写了一个 C# 版本的自动更新,这个是根据配置文件 + 网站文件等组成的框架,以实现本地文件的新增、替换和删除,虽然实现了自动更新的功能,但用起来过于复杂,代码量也比较大,改起来困难,后面我就想能不能弄一个 FTP 服务器进行版本的更新。原创 2024-01-30 09:31:57 · 727 阅读 · 0 评论 -
C# Winform 多个程序之间的通信(非Scoket)
C# Winfrom程序之间通讯_c# sendmessege copydatastruct 返回多个值_熊思宇的博客-CSDN博客在之前我写过 winform 程序与程序之间的通信,但是这个版本有个问题,那就是只能由两个程序进行通信,同时打开多个程序的话,接收方收到的数据就会一模一样,这次发表这个教程,也就是要解决这个问题。归根结底,还是FindWindow这个函数的用法没用对,下面是对应的解释:函数获得一个顶层窗体的句柄,该窗体的类名和窗体名与给定的字符串相匹配。这个函数不查找子窗体。原创 2024-01-30 09:30:58 · 699 阅读 · 0 评论 -
C# Winform 三层架构
三层架构是 C# 桌面开发中比较常用的框架,是由 表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构组成,目的是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。原创 2024-01-30 09:30:16 · 181 阅读 · 0 评论 -
C#与西门子PLC通讯——熟手快速入门
翌日,斯电气之士大喜,言已成通讯之试,访吾欲构一物。余默思片刻,书此以为之。本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。在实际通讯中,往往需要先确定地址,数据类型和读写规则。因此本文将侧重分析数据类型的读写,以及处理读写过程中容易出现的问题,并且扩展了在交互过程中遇到陌生数据类型的处理方式。原创 2024-01-21 13:31:41 · 1007 阅读 · 0 评论 -
架构设计快速入门——领域驱动设计(DDD)(C#)
在软件开发领域,为了更好地应对业务需求的复杂性和变化,开发者们一直在寻找更有效的开发方法。领域驱动设计(Domain-Driven Design,简称DDD)作为一种设计方法,强调了对业务领域的深入理解,并试图将这种理解映射到软件模型中。本文将深入探讨领域驱动设计在C#中的应用,介绍其基本概念、框架结构以及实际应用。在软件开发和系统设计中,“领域”的定义是核心概念之一,尤其在领域驱动设计(DDD)中占据着中心地位。问题领域(Problem Domain):这是指软件系统所要解决的具体业务问题或业务场景。原创 2024-01-21 13:27:46 · 971 阅读 · 0 评论 -
Vue+ElementUI+C#技巧分享:周数选择器
Vue.js和ElementUI的结合使用已成为创建高效、美观和用户友好的Web应用的一种流行方式。特别是在处理复杂的用户界面和交互时,这种组合展现出其独特的优势。这篇博客旨在深入探讨如何利用Vue和ElementUI来构建一个实用的周数选择器。周数选择器在很多类型的应用程序中都非常重要,尤其是在需要日期管理的系统中,如日历应用、项目管理工具或报告系统。正确地理解和计算周数对于确保数据的准确性和用户界面的一致性至关重要。然而,由于不同地区和标准对周的定义存在差异,开发这样的功能可能会带来挑战。原创 2024-01-21 13:25:56 · 1082 阅读 · 0 评论 -
C#与西门子PLC通讯——手搓S7通讯协议
知其然,知其所以然。这篇文章,我们就尝试重复造一个轮子。通过对通讯协议的简要分析,我们能够更好地了解与西门子PLC是如何交互的。最后,我们就运用底层方法,使用Socket通讯将一个数组读取出来,再将数组反转之后写回PLC中。本篇文章算是《C#与西门子PLC通讯》的番外篇,扒开了S7 Net Plus的神秘外衣,一探底层逻辑,了解了PLC的交互行为和通讯原理。未来如果想要在一门新出的开发语言中加入相应的通讯库,那么这段篇博文就可以作为参考蓝本。当然,如果技术能力更高,还可以手写一个高并发的轻量级的通讯库。原创 2024-01-21 13:25:16 · 1617 阅读 · 0 评论 -
C#与西门子PLC通讯——高手快速入门
又过三日,斯电气之士志在不凡,再请吾赐以开发之微言,吾思之经久,遂书笔记一篇,以赞其志。本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。本文将以一个自动化立体车库作为案例入手,完成基于领域驱动设计(DDD)的项目设计。使用Entity Framework Core实现对车辆信息的数据库访问。在/// 位置id[Key]set;原创 2024-01-21 13:24:30 · 959 阅读 · 0 评论 -
C#和MySQL技巧分享:日期的模糊查询
在处理数据库查询时,特别是在涉及到模糊查询和日期字段时,我们常常面临一个挑战:如何在确保查询效率的同时,实现精确和灵活的数据检索?众所周知,直接转换数据库字段类型进行匹配往往会导致查询效率下降,甚至引发全表搜索的问题,这在处理大量数据时尤为明显。因此,找到一种既能保持数据库性能又能满足查询需求的方法显得尤为重要。这篇博客中,我们探讨了在C#和MySQL环境下进行模糊查询日期的处理策略。我们从EF Core的模糊查询开始,深入分析了在MySQL中对日期进行模糊查询的效率问题,并提出了相应的优化方法。原创 2024-01-21 13:23:37 · 916 阅读 · 0 评论 -
C#与西门子PLC通讯——新手快速入门
一日,吾遇一电气之士,闻其欲谋转开发之途,叹其敏而好学,故以吾之薄知相赠,遂有此记焉。本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。整体架构示意图如下:注:网络架构中的IP地址可以根据自己的实际情况进行调整。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。原创 2024-01-21 13:22:29 · 1894 阅读 · 0 评论 -
C# Modbus通信从入门到精通(11)——调试软件Modbus Slave和Modbus Poll的使用
我们在开发Modbus程序的时候,会需要测试以下我们写的Modbus程序有没有问题,这时候就需要使用到Modbus Slave和Modbus Poll这两个软件,Modbus Slave是模拟Modbus从站,Modbus Poll是模拟Modbus从站主站的,原创 2024-01-21 13:21:40 · 1484 阅读 · 0 评论 -
Net Core中数据库事务隔离详解——以Dapper和Mysql为例
本节通过Dapper对MySql中事务的四种隔离级别下进行测试,并且指出事务之间的相互关系和问题以供大家参考。1、事务1隔离级别为时,可以读取其它任何事务隔离级别下未提交的数据2、事务1隔离级别为时,不可以读取其它事务未提交的数据,但是允许其它事务对数据表进行查询、添加、修改和删除;并且可以将其它事务增删改重新获取出来。3、事务1隔离级别为时,不可以读取其它事务未提交的数据,但是允许其它事务对数据表进行查询、添加、修改和删除;但是其它事务的增删改不影响事务1的查询结果4、事务1隔离级别为。原创 2024-01-21 13:19:15 · 904 阅读 · 0 评论 -
ASP.NET Core 使用Swagger/OpenAPI文档化API
在这个过程中,团队逐渐形成了Swagger项目,并于2011年9月将其开源,这个项目的初衷是为了提供一种简便的方式来描述、文档化和消费RESTful API,在Swagger的早期阶段,它获得了一些小公司和独立开发者的关注,因为HTTP API通常没有一个可机器读取的描述机制,而Swagger提供了一个相对简单和易于理解的方法。在2015年11月,SmartBear Software公司(当时Swagger的维护者)宣布帮助创建一个新的组织,即OpenAPI Initiative,由Linux基金会赞助。原创 2024-01-21 13:17:49 · 887 阅读 · 0 评论 -
C#开源跨平台的多功能Steam工具箱&GitHub加速神器
作为一名程序员你是否会经常会遇到GitHub无法访问(如下无法访问图片),或者是访问和下载源码时十分缓慢就像乌龟爬行一般。今天分享一款C#开源的、跨平台的多功能Steam工具箱和GitHub加速神器:Watt Toolkit。原创 2024-01-21 13:16:31 · 306 阅读 · 0 评论 -
C# 时间戳(TimeStamp)与时间(DateTime)的互相转换
时间戳是指从格林威治时间(UTC)1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。原创 2024-01-20 09:53:28 · 848 阅读 · 0 评论 -
C#字符与字符串
除了使用比较运算符“==”,在C#中最常见的比较字符串的方法还有Compare()、ComoareTo()、EquaIs()方法等,这些都归属于string类。CompareTo()与Compare()方法相似,不同的是CompareTo()方法以实例对象本身与指定的字符串比较。否则返回False。Replace()方法用于将字符串中的某个字符或字符串替换成其他的字符或字符串。**注:**如果给定的填充后的长度大于填充后的长度,则会将填充的元素进行位置补齐。一般以IS开头的多为判断,TO开头的多为转换。原创 2024-01-20 09:52:20 · 920 阅读 · 0 评论 -
Windows窗体学这一篇就够了(C#控件讲解)
常用控件包括文本控件、选择控件、分组控件、菜单控件、工具栏控件以及状态栏控件常用控件的作用控件分类作用文本控件文本控件可以在控件上显示文本选择控件主要为用户提供选择的项目分组控件使用分组控件可以将窗体中的其他控件进行分组处理菜单控件为系统制作功能菜单,将应用程序命令分组,使它们更容易访问工具栏控件提供了主菜单中常用的相关工具状态栏控件用于显示窗体上的对象的相关信息,或者可以显示应用程序的信息通过设置DateTimePicker控件的CustomFormat属性,可自定义日期时间格式字符串。原创 2024-01-20 09:49:48 · 1208 阅读 · 0 评论 -
C#WindowsForm常用窗体工具
如果用户选择了一个或多个文件并点击了打开按钮,那么在 DialogResult.OK 的条件下,可以通过 FileName 或 FileNames 属性获取用户选择的文件路径和文件名。如果用户指定了保存位置和文件名,并点击了保存按钮,那么在 DialogResult.OK 的条件下,可以通过 FileName 属性获取用户指定的保存文件路径和文件名。通过使用 BackgroundWorker,我们可以在后台线程上执行耗时的操作,同时保持用户界面的响应性,并提供进度报告和取消操作的支持。原创 2024-01-20 09:49:03 · 1267 阅读 · 0 评论 -
C#中var、object和dynamic的区别
在C#中,var、object和dynamic这三个关键字具有不同的特性和用途。var关键字用于隐式类型推断,编译时确定变量类型,一旦确定后不能更改。+ object关键字是C#中的基础类型,可以保存任意类型的数据,但需要进行装箱和拆箱操作,并且需要显式类型转换才能获取原始数据。+ dynamic关键字用于动态类型,变量类型可以在运行时推断并更改,避免了显式类型转换的繁琐,但会带来一些性能开销和运行时错误的风险。根据具体的需求和场景,选择合适的关键字进行变量声明和操作是编写高效和可读性良好代码的关键。原创 2024-01-20 09:48:08 · 902 阅读 · 0 评论 -
.NET8极致性能优化-Random
当调用像Ramdom.Next(int min, int max)函数的时候,需要提供min到max范围内的值。简单点来说,就是取最大值的log2(设最大值为x,取x的2的幂数),并进行移位丢弃。使用新的方法,它实现了模数(之前使用模数得到随机结果)减少(例如 Next() % max)。下面看下测试结果,这里需要注意Random从PGO中可以获得提升,因为Random使用的内部抽象可以被去虚拟化,所以下面展示了启动和未启用PGO的影响。.NET8的性能优化是方方面面的,随机数值的优化同样需要进步。原创 2024-01-20 09:46:49 · 808 阅读 · 0 评论 -
语音革命:打造您的个人AI助手,悄悄分享我的开源语音识别全攻略!
NAudio是一款由 Mark Heath 编写的开源.NET音频库。原创 2024-01-20 09:46:04 · 938 阅读 · 0 评论 -
记一次 .NET某道闸收费系统 内存溢出分析
这个事故非常有意思,一个简简单单的CanRead误用就对程序造成了毁灭性的打击,这也警示大家在用某个属性某个方法前,一定要先搞清楚它到底是怎么玩的。本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。原创 2024-01-20 09:45:11 · 353 阅读 · 0 评论 -
一个具有强大PDF处理能力的.Net开源项目
*2、其他插件功能:**支持XML/Html转为PDF、隐藏PDF敏感信息、支持国际化、可压缩PDF大小提高性能、XFA表单转为PDF、PDF诊断;itext7-dotnet是一个功能强大的库,专门为.Net设计,用于创建、编辑和操作PDF文件,可以帮我们快速、高效得处理PDF文件。**1、核心功能:**布局引擎、合并PDF、数字签名、表单创建与操作、PDF/A、PDF/UA、FIPS加密、条形码生成、支持SVG;该项目支持创建各种类型的PDF文件,包含基本文本文档、表格、图像、连接等。原创 2024-01-20 09:44:31 · 352 阅读 · 0 评论 -
用AOT导出本地dll
记得之前在做医保接口时,经常要调一些C++或delphi写的本地dll(这些dll通常是用来读医保卡之类),这里简单介绍一下用C#生成本地可以直接调用dll,具体做法是通过UnmanagedCallersOnlyAttribute来完成。现在创建测试的.NET项目,使用.NET中的P/Invocke来调用。把发布出来的dll,复制到当前项目,并设置文件“复制到输出目录”属性为始终复制。项目中分别测试了,int,double[],string,自定义结构等几种类型的进出。原创 2024-01-20 09:43:46 · 312 阅读 · 0 评论 -
ASP.NET Core HttpClient的实现原理系列四
HttpClient 组件最早出现在 .NET Framework中,它为开发者提供了一个方便、灵活且强大的方式来进行 HTTP 请求,在 .NET Framework 中,HttpClient 常常用于执行与 Web 服务的通信,获取数据或与 RESTful API 进行交互,在不同的平台进行了衍生出不同的处理方式。在HttpClientHandler本质上是对SocketsHttpHandler的封装,我们在创建HttpClient的时候默认使用了该处理器,我们在创建的时候还可以手动指定别的处理器。原创 2024-01-19 09:39:03 · 318 阅读 · 0 评论 -
用C#开发Excel插件的强大开源工具
Excel-DNA是一个.Net开源项目,为开发者提供了一种便利的方法,可以将.Net代码与Excel集成,能够轻松的为Excel创建自定义函数、图表、表单等,一方面不仅可以利用.Net强大的库,另外一方面还可以与外部数据、程序等连接交互。利用该项目我们可以用来,开发一些数据分析与处理、数据自动化等一些场景。**5、运行项目,**并在对话框选择:仅为本对话启用此加载项。**1、创建一个类型:**类库的项目,这边选择.Net 6。**3、添加依赖库:**Excel-DNA。觉得好看 点个在看👇。原创 2024-01-19 09:38:25 · 378 阅读 · 0 评论 -
.NET领域最硬核的gRPC 核心能力一把梭
脚手架项目使用以下是继承②强基类而实现的grpc服务});最后在原http服务进程上注册Grpc端点await context.Response.WriteAsync("----http调用-------");});});以上在localhost:5000端口同时支持了grpc调用和http调用。— 启动服务—…拦截器与 .net httpclientDelegate 、 axio的请求拦截器类似,都是在发起调用的时候,做一些过滤或者追加的行为。})// 默认在客户端之间共享。原创 2024-01-19 09:37:41 · 396 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第4章 类型、存储和变量
C# 中,数值类型不具有布尔意义。图4.1 预定义类型 所有预定义类型都直接映射到底层的 .NET 类型,C# 的类型名称就是 .NET 类型的别名。 应尽量使用 C# 类型名称而不是 .NET 类型名称。表4.1 预定义简单类型表4.2 预定义非简单类型类(class)+ 结构(struct)+ 数组(array)+ 枚举(enum)+ 委托(delegate)+ 接口(interface)原创 2024-01-19 09:36:34 · 394 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第3章 C# 编程概述
表3.4 注释类型本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。原创 2024-01-19 09:35:48 · 344 阅读 · 0 评论 -
C# 图解教程 第5版 —— 第1章 C# 和 .NET 框架
.NET 兼容编程语言提供的类型,通常映射到 CTS 中已定义的内置类型集的某一个特殊子集;只要遵循一定的规则,.NET 语言的程序可以相互使用其他 .NET 语言写的类;CTS(Common Type System,公共类型系统) 定义了在托管代码中一定会使用的类型的特征,如。 CLR 是 .NET 框架的核心组件,位于操作系统的顶层,管理程序的执行,如图 1.5 所示。 .NET 语言的编译器接受源代码,生成名为程序集的输出文件,如图 1.2 所示。+ 程序中使用的类型的元数据;原创 2024-01-19 09:34:51 · 399 阅读 · 0 评论 -
【C#】.net core 6.0 依赖注入生命周期
当通过 services.AddSingleton 方法传递一个工厂方法时,可以使用委托来创建自定义的生命周期管理。下面是一个示例代码: 首先,定义一个自定义的服务类 CustomService: public class CustomService { public DateTime CreatedAt { get;} }原创 2024-01-19 09:33:56 · 409 阅读 · 0 评论 -
C#几种截取字符串的方法
本文介绍了几种常用的C#字符串截取方法,包括使用Substring方法、Split方法、Substring和IndexOf方法以及使用Regex类。根据具体的需求,我们可以选择合适的方法来截取字符串,并灵活应用于实际编程中。除了这些常见的方法,你还可以根据实际情况进行拓展和扩展,进一步丰富自己的字符串处理能力。不断学习和实践,掌握更多的技巧和方法,将有助于提高你的编程技能和效率。本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。原创 2024-01-19 09:32:54 · 977 阅读 · 0 评论 -
C#的DateTimePicker控件(日期控件)
通过DateTimePicker控件的CustomFormat属性可以自定义日期/时间格式字符串。set;属性值:表示自定义日期/时间格式的字符串。Format属性必须设置为DateTimePickerFormat.Custom,才能影响显示的日期和时间的格式设置。通过组合格式字符串,可以设置日期和时间格式。格式字符串有效格式字符串说明d一位数或二位数的天数dd二位数的天数,一位数的天数前+0ddd3个字符的星期几缩写dddd完整的星期几h。原创 2024-01-19 09:32:09 · 1195 阅读 · 0 评论 -
C#(CSharp)入门教程
a 为 False&逻辑与运算符a & b 为 False|逻辑或运算符a | b 为 True^逻辑异或运算符a ^ b 为 True&&条件逻辑与运算符a && b 为 False||条件逻辑或运算符a || b 为 True。a 等于 -2> 2 等于 0>>>无符号右移运算符a >>> 2 等于 0&逻辑与运算符a & b 等于 0^逻辑异或运算符a ^ b 等于 3|逻辑或运算符a | b 等于 3。但是有时候也会用到死循环。原创 2024-01-19 09:29:06 · 1262 阅读 · 0 评论