自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (15)
  • 问答 (8)
  • 收藏
  • 关注

原创 win10笔记本在显示设置中不慎将主显示器禁用掉导致开机黑屏的解决方案

长按电源键将电脑强制关机,然后点击电源键开机,并且在屏幕出现windows标志之后,立即长按电源键进行强制关机,从而触发windows的“引导失败”机制,之后再按电源键开机就能够进入到windows系统的高级选项界面,找到高级重启进行重启,会进入到安全模式,在安全模式下主屏幕是正常显示的,找到设备管理器,找到显卡适配器,右键卸载驱动,然后重启电脑,即可解决问题。

2024-03-19 10:27:20 587

原创 windows系统当程序动态调用动态链接库dll时的搜寻路径及搜寻顺序

【代码】windows系统当程序动态调用动态链接库dll时的搜寻路径及搜寻顺序。

2024-02-26 10:58:07 430

原创 强大的APIMonitor

使用APIMonitor进行跟踪调试指定动态链接库函数的调用:

2024-02-22 17:15:40 321

原创 c#热更新方案

byte[] fileData = File.ReadAllBytes(assemblyFile);Assembly asm = Assembly.Load(fileData);

2024-01-17 10:36:42 426

原创 关于git删除仓库中原本应该忽略的文件的研究

关于git删除仓库中原本应该忽略的文件的研究

2024-01-15 11:05:09 412

原创 关于git与git-lfs对文件压缩存储方面的研究

这说明了如果直接用git管理大文件,在历次对大文件的修改不大的前提下,git的Delta压缩会极大的节约空间,因为只保留历次文件修改之间的区别。就跟上面的实验一样,如果你的大文件会经常性的修改,你还是别用git lfs了,哪怕你一次只做一个字节的修改,git lfs也会完整的给你存一份,压缩空间?好了,以上就是git自身对于仓库文件的压缩,下面,咱们再看git-lfs,我原本以为git-lfs作为专为管理大文件而生的git扩展,自然有对空间管理这方面的牛b之处,没想到一番测试下来大跌眼镜。

2024-01-14 18:31:05 1194

原创 关于git-lfs删除历史版本

following:seeseeOptions:--dry-run:-d:--force:-f:--recent:-c:--verbose:-v:few days.it is.them.

2024-01-13 23:09:38 689

原创 debian12部署Gitea服务之二——部署git-lfs

初始化之后发现工作空间如下内容发生了变化:config文件增加了如下内容:[lfs]

2024-01-13 17:55:16 1199

原创 debian12部署Gitea服务

记录在Debian12上部署gitea的过程

2024-01-13 11:05:28 1141

原创 部署Gitea服务的那些坑

这就导致了一个问题,在用git命令clone或push向该sshUrl时,会找不到仓库,因为OpenSSH的默认寻址根路径是用户文件夹,也就是[~],想要从这个根路径找到仓库,必须使用绝对路径的方式。(注,路径外并非双引号,而是两层单引号这是通过cmd作为shell执行git命令的问题,导致路径无法识别)修改Gitea的配置文件,在Gitea安装路径的这里:Gitea\custom\conf\app.ini。目标:在win10系统上部署Gitea服务,以ssh协议的方式访问。官网下载并安装Git。

2024-01-11 15:38:35 486

原创 搭建局域网内基于git协议的git服务

在服务器指定路径下执行创建裸仓库命令:成功创建仓库之后,在仓库根目录执行以下命令开启git daemon服务,默认监听端口为9418:在客户端电脑上创建一个空文件夹,用来clone服务器上的git仓库,命令如下:

2024-01-10 14:45:35 380

原创 深入理解.net运行时方法表

当将“实例”作为参数传递时,所传递的是“实例的引用”,说人话就是传递指向上述结构中“对象数据”部分起始位置的指针,虽然传递的是指向“对象数据”的指针,运行时是有办法通过该指针找到“对象头”的数据的,找到了“对象头”,运行时自然也就能够知道该对象的类型信息了,从而实现了高级的语言特性,如多态性、垃圾回收等。基于这种机制,就实现了多态,在创建实例时,实例的“对象头”中包含了指向自身类型所对应的方法表的指针,基于此,找到方法表,再根据方法标识找到对应的方法表项,从而就自然而然找到了指向方法体的指针。

2023-12-23 11:46:23 791

原创 sqlserver调试clr程序集

选择附加到进程调试,勾选显示所有用户的进程,选择sqlserver.exe进程,打好程序集的断点,基于sqlserver触发clr程序集,即可中止到相关断点处。

2023-11-28 12:24:50 413

原创 关于控件的句柄随笔

在使用c#语言时,创建一个控件时,并不意味着该控件的句柄被创建,一个控件的句柄被创建时,必然会触发该控件的Load事件,如果在调用某些代码之前要确保控件的句柄被创建,可以使用控件的Load事件或者HandleCreated事件,一个控件在触发这两个事件时,其句柄一定是成功创建的状态。该属性为false时,说明当前线程为创建控件句柄的线程,或者控件的句柄还没有被创建,则不需要使用控件的Invoke调用操作控件的代码。

2023-11-16 09:11:21 147

原创 在测试环境进行sqlserver锁表测试

sqlserver锁表测试

2023-08-16 11:25:05 202

原创 c# 使用socket进行tcp通信

【代码】c# 使用socket进行tcp通信。

2023-07-21 14:58:31 1241

原创 端口的几种状态详解

端口状态主要有以下几种:LISTENING状态、ESTABLISHED状态、CLOSE_WAIT、TIME_WAIT、SYN_SENT状态。

2023-07-21 13:56:19 1814

原创 关于Linq查询结果集的应用

为什么会有这样的区别?因为如果你直接用变量获取linq查询的结果集,那么在之后的代码中每次调用该结果集变量,都会再次触发查询,如果你不想这样,就将linq查询的结果集转为list,这样的话,就会仅得到当时的查询结果,后续使用该结果集也不会再触发查询。

2023-06-28 10:12:29 78

原创 c#完美区分USB条码枪与键盘输入的方案

对USB条码枪与键盘输入进行区分的最完美方案,焦点无需切换,无需判断录入间隔

2023-05-25 16:13:20 1412 4

原创 未找到元数据文件

原因,因为项目3引用了项目1,所以在编译时会优先编译项目1,又因为项目1引用了项目2,所以项目1会在编译时,寻找所依赖的项目2的编译结果,但项目1对项目2的引用设置是解决方案A设置的[引用项目]模式,而解决方案B中并没有将项目2加入进来,这就导致解决方案B并不能知道项目2所设置的目标编译路径是什么,只能根据项目1的引用信息到项目2的默认编译路径,也就是bin文件夹下去找,这自然是找不到的,所以就报出了编译错误。1、修改项目1对于项目2的引用为直接引用项目2的编译结果dll文件。

2023-05-23 10:59:56 1303

原创 sqlserver事务嵌套引发的问题

sqlserver事务嵌套引发的问题

2023-04-11 16:14:36 473 2

原创 利用windows事件查看器分析exe无法打开的问题

在exe出现运行无反应的时候,我们首先用DependenciesGui依赖分析工具,来分析软件是否缺少了哪些依赖,如果发现不缺少必须的依赖,那么就可能是程序在启动时发生了未经捕获处理的异常,那么我们可以借助windows的事件查看器来分析程序的未捕获的异常信息。如果在部署的客户机上无法用开发工具来进行调试,利用上面的手段,就可以大概定位到问题所在了。2、发生未捕获的异常。

2022-11-16 12:33:09 1811

原创 c#http通讯post表单提交

PS:对于协议的理解深度完全比使用表层的工具类要重要得多,重要得多,重要得多!因为一旦你的需求不能通过复制粘贴满足的时候,就必需要自己造轮子。

2022-11-11 16:57:56 1170

原创 手写操作系统记录

然后通过nasm编译为仅包含指令的纯二进制bin文件。以上就是一个操作系统的最简单最基础的雏形。

2022-10-31 16:03:58 152

原创 关于两种容易混淆的补码概念

十进制256的二进制数值为100000010,其低8位自然是00000010,基于第二种补码的概念,求补码结果是与数值符号无关的,也就是说你无论是正数还是负数,都按照统一的公式来计算补码结果,这个公式就是(补码结果=原数值按位取反+1),那么00000010按位取反=11111101,然后再+1=11111110,十进制为254,即为数值258低8位的补码结果。如果基于第一种概念,那么求补码形式数值的过程,是与数值符号相关的,正数的补码形式数值=其原码形式数值,负数的补码形式数值=其反码形式数值+1。

2022-10-20 12:17:42 658 2

原创 王爽《汇编语言》检测点11.2详细解析

10010000为十进制负数-112(寄存器会以补码形式存储负数,而补码=反码+1,逆推此公式,将10010000减1可得该负数的反码二进制数值,将反码取反,即可得到该负数的绝对值的原码),16-112=-96,已知8位寄存器的有符号数值范围为-128至127,-96在此范围之中,所以没有溢出,OF=0。OF:八位寄存器有符号数值范围为-128到127,结果0在此范围之中,所以没有溢出,OF=0。非算术运算,CF=0 OF=0 SF=0 ZF=1 PF=1。al结果数值为0,所以ZF=1。

2022-10-19 13:47:56 1045

原创 串口通信关键参数

这里仅对异步串行UART(Universal Asynchronous Receiver/Transmitter)下,市面上用得比较多的RS232进行举例。目前市面上常用的RS232物理接口类型为DB9(9针),DB15(15针,少见),DB25(25针)如果未在通讯协议文档中标明,那么一般是使用默认针脚定义。注意要与比特率作区分。

2022-10-17 15:59:21 514

原创 王爽《汇编语言》课程设计1

【代码】王爽《汇编语言》课程设计1。

2022-10-17 13:55:29 205

原创 关于C#的RSA加密

那么问题来了,在C#的RSA加密工具类RSACryptoServiceProvider中,并没有支持PEM格式公钥为基准的加密方法,只能用一种.net平台认可的xml字符串的公钥才能够进行加密。一般对接第三方的接口时,接口提供方如果要求以RSA方式进行加密传输,并且给了你一串字符串说是RSA加密公钥,那么该公钥一般是PEM格式文件的base64字符串表现形式。另外如果在之后加密时报长度超长之类的错误,说明需要分段加密,因为RSA的加密机制要求:待加密的字节数不能超过密钥的长度值除以 8 再减去 11。

2022-09-28 09:31:28 8029

转载 WIN10系统盘安装提示MBR分区问题解决步骤

当选中安装的系统盘时,提示Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表。命令后,按enter键,查看电脑的硬盘。命令后,按enter键,表示选中第一块硬盘。(select disk x 命令中的x,表示选中的硬盘编号)。命令后,按enter键,进入到 DISKPART 模式。1、让启动U盘以传统的BIOS方式启动来安装。方法二:将系统盘由MBR格式修改为GPT格式。2、将电脑的系统盘由MBR修改为GPT。命令将选中的硬盘转换成GPT分区表格式。命令清除选中硬盘上的所有分区和数据。

2022-09-10 20:50:12 18009 2

原创 使用VS的分析工具Fuslogvw分析加载依赖dll失败的问题

使用该工具可分析程序在进行dll探查与加载时出现的问题。

2022-08-24 15:24:38 420

原创 医疗协议HL7的内容构成

一般情况之下,如未在HL7消息头部进行声明,则默认字符编码为ISO8859-1,例如(HL7版本2.3.1):如果在传输的消息内容之中使用了以上的分割符号,需在其前方加入转义字符“\”示例:“A&B”应该写为“A\&B”...

2022-07-04 14:55:07 321

转载 DEV项目部署导出所有依赖的DEV插件dll文件

打开你的VS项目,菜单栏的“工具” 里有 DevExpress Assembly Deployment Tool 菜单,用这个工具可以导出当前项目使用的DEV 相关dll。有一个特别需要注意,如果你用了Dev 里的图标,注意把 DevExpress.Images.v{版本号}.dll 放到你的项目里。

2022-06-02 16:32:59 465

原创 DevExpress V14.1报表导出PDF文件文本换行问题

DEV报表导出PDF文件存在缺陷,因为导出PDF时,它的文本换行规则是根据英文语法来的,遇到空格或者英文标点符号,就判断为一个单词的结束,然后看当前行的剩余空间是否足够下一个单词的显示,如果不够,则换行。显然,这是不符合非英文文本的换行需求的,要想修改这个问题,只能用反编译来解决。

2022-06-02 16:19:12 797 4

原创 sqlserver用sql语句来进行外键约束的修改

--先删掉约束ALTER TABLE 表名1DROP CONSTRAINT 约束名--再重新添加约束ALTER TABLE 表名1ADD CONSTRAINT 约束名 FOREIGN KEY(外键列名1,外键列名2) REFERENCES 表名2(列名1,列名2) ON UPDATE CASCADE ON DELETE CASCADE--其中ON UPDATE CASCADE代表着级联更新,ON DELETE CASCADE代表着级联删除,可根据需求选择带上或者不带...

2022-05-11 14:01:52 2290

转载 PowerShell调用C#代码

自己写了一个c#类,想用powershell(4.0)创建一个自定义的.net对象,但是不知道怎么加载改类(引用了Newtonsoft.Json)使用loadfile加载的时候错误如下[void][System.Reflection.Assembly]::LoadFile("E:\1.dll")使用“1”个参数调用“LoadFile”时发生异常:“该模块应包含一个程序集清单。换用add-type加载add-type -path e:\1.cs报错:未能找到类型或命名空间名称“Ne.

2022-03-25 17:07:52 1942

转载 修改DEVRibbonForm标题相关属性

RibbonForm类代表一个功能区表单 - 一种嵌入ribbon control并支持皮肤的表单。RibbonForm类从XtraForm类派生而来,并共享其大多数功能,例如发光或阴影效果。与XtraForm不同,ribbon form的边框和标题栏始终为皮肤。将Ribbon Forms添加到项目 将标准表单转化为Ribbon Forms 复合表单标题 增加边框宽度 嵌入Ribbon快速访问工具栏 嵌入状态栏 与BackstageView控件的交互 Ribbon显示模式选择器.

2022-03-17 15:54:39 619

原创 sqlserver数据库优化指南

运行SqlServerProfile工具,连接数据库,选择要进行监测的事件:监测一段时间之后,将监测结果保存到文件或者表:这里将记录保存到了表中,表名随意写:之后可以对此监测记录进行条件查询,来筛查出哪些命令的执行最消耗性能,语句例如:SELECT TextData,Duration,CPU FROM [PEISSystem].[dbo].[Test]WHERE EventClass = '12' AND CPU < (0.4*Duration)ORDER BY Dura.

2022-03-07 17:05:18 974

转载 关于GAC全局程序集缓存

GAC 与其物理路径GAC (Global Assembly Cache) 是 .NET 框架下程序集(Assembly)的一个全局缓存。不同 CLR (Common Language Runtime, 公共语言运行时) 版本,不同平台的程序集会被缓存在不同路径下。CLR 版本 对应 .NET 版本 程序集平台 -> 缓存位置 1.0 1.0 - -> %windir%\assembly\GAC 1.1 1.1 -&gt

2022-03-01 09:07:05 854

原创 通过注册表查看安装了哪些版本的.net Framework

win键加r调出运行窗口,录入regedit回车打开注册表编辑器其中HKLM为HKEY_LOCAL_MACHINE:1.0 HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705 Install REG_SZ 等于11.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 Install REG_DWORD 等于12.0 HKLM\Software\Microsoft\NET F

2022-02-28 15:38:07 2499

此工具为ilmerge工具的gui形式工具,用于合并多个dotNet程序文件为单一文件,无论主文件是dll还是exe都可以

此工具为ilmerge工具的gui形式工具,用于合并多个dotNet程序文件为单一文件,无论主文件是dll还是exe都可以,只要在合并时明确指定哪一个dll文件或者exe为主文件即可。

2023-08-28

c++编写的有GDI资源泄漏问题的文本框控件源码,求大神解决

这是一个c++语言所编写的一个文本框控件源码,Node.ocx,但是该控件因未能及时释放GDI资源导致一直累加直到程序报错,望有能力的大神帮忙解决。

2020-10-23

c#UDP通讯demo.rar

c#语言的UDP通讯实例demo,代码很少,思路清晰明了,非常具有参考价值,可同时作为监听端和发送端。

2020-07-01

微软企业库数据库连接dll文件.rar

微软企业库6,可加密数据库连接字符串,具体使用方式请看本人博客,下载的压缩包里也有相应的使用示例,如果有必需要使用微软企业库进行数据库连接,又苦于无法加密数据库连接字符串的同学可以拿去使用。

2020-01-17

CefSharpDemo(64位).rar

截止目前上传时间为止最新的CefSharp插件demo,完美集成目前为止最新的PPAPI flash,完美支持音频、视频、麦克风、摄像头,部署就能用,要求编译平台为x64,编译平台最低为.net 4.5.2,开发工具为vs2012。32位版本的也已上传,请进入本人的资源界面下载。

2019-06-05

CefSharpDemo.rar

截止目前上传时间为止最新的CefSharp插件demo,完美集成目前为止最新的PPAPI flash,完美支持音频、视频、麦克风、摄像头,部署就能用,要求编译平台为x86,编译平台最低为.net 4.5.2,开发工具为vs2012。64位版的demo随后也会上传。

2019-06-05

pepflashplayer(32_0_0_192 目前为止最新版32位和64位).rar

pepflashplayer.dll(32_0_0_192版 cefsharp ppapi flash集成 目前为止最新版 32位和64位)

2019-06-05

pepflashplayer(32位和64位dll,版本27.0.0.184).rar

cefSharp集成flash所需dll文件,32位和64位都有,并且都是比较新的版本,需要的拿去

2019-06-05

pepflashplayer.rar

cefSharp要支持flash需要集成该文件方可,请下载之后解压,cefSharp集成该flash具体代码: public static void Init() { var settings = new CefSettings(); settings.RemoteDebuggingPort = 8088; settings.Locale = "zh-CN"; settings.CefCommandLineArgs.Add("ppapi-flash-path", System.AppDomain.CurrentDomain.BaseDirectory + "pepflashplayer.dll"); //指定flash的版本,不使用系统安装的flash版本 settings.CefCommandLineArgs.Add("ppapi-flash-version", "29.0.0.171"); settings.CefCommandLineArgs.Add("enable-media-stream", "enable-media-stream"); settings.IgnoreCertificateErrors = true; settings.LogSeverity = LogSeverity.Verbose; if (DebuggingSubProcess) { //var architecture = Environment.Is64BitProcess ? "x64" : "x86"; //settings.BrowserSubprocessPath = "..\\..\\..\\..\\CefSharp.BrowserSubprocess\\bin\\" + architecture + "\\Debug\\CefSharp.BrowserSubprocess.exe"; } //settings.RegisterScheme(new CefCustomScheme //{ // SchemeName = CefSharpSchemeHandlerFactory.SchemeName, // SchemeHandlerFactory = new CefSharpSchemeHandlerFactory() //}); if (!Cef.Initialize(settings)) { if (Environment.GetCommandLineArgs().Contains("--type=renderer")) { Environment.Exit(0); } else { return; } } }

2019-06-05

C# Oracle代理连接,免安装客户端

需要.net4平台,引用之后,访问工具类示例: using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Security.Cryptography; using System.IO; using Oracle.ManagedDataAccess.Client; namespace DBconnection { public class DBHelper { /// <summary> /// 读取数据库连接 /// </summary> public static readonly string OracleConnectionStr = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.9.211)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=HIS)));Persist Security Info=True;User ID=ZLHIS;Password=o15ntu;"; /// <summary> /// 集合查询:在此完成所有的集合类型查询 /// </summary> /// <param name="sqlQuery">查询语句</param> /// <returns>结果集合</returns> public static DataSet OracleFillTable(string sqlQuery) { using (OracleConnection con = new OracleConnection(OracleConnectionStr)) { //创建数据适配器,将查询语句及连接字符串两个参数传进数据适配器 con.Open(); OracleCommand cmd = con.CreateCommand(); cmd.CommandText = sqlQuery; //新建一个表格对象dt,用来获取查询的数据 DataSet ds = new DataSet(); try { //填充表格 OracleDataAdapter oda = new OracleDataAdapter(cmd); oda.Fill(ds); //如果查询无误,则返回查询出的数据 return ds; } catch { //执行查询出现错误,返回null值 return null; } finally { //主动销毁所用的资源 ds.Dispose(); cmd.Dispose(); // 关闭连接 con.Close(); } } } /// <summary> /// 集合查询:在此完成所有的集合类型查询 /// </summary> /// <param name="sqlQuery">查询语句</param> /// <returns>结果集合</returns> public static string OracleGetTable(string sqlQuery) { string result = null; try { using (OracleConnection con = new OracleConnection(OracleConnectionStr)) { OracleCommand cmd = con.CreateCommand(); try { con.Open(); cmd.CommandText = sqlQuery; try { //执行sql语句 result = cmd.ExecuteScalar().ToString(); } catch { result = "-1"; } } catch (Exception e) { throw new Exception("数据库连接出现错误!"); } finally { //主动销毁资源 cmd.Dispose(); // 关闭连接 con.Close(); } } } catch (Exception e) { // MessageBox.Show(e.ToString()); } return result; } } }

2019-03-29

NOPI所有dll

引用之后,使用该方法读取excel文件 #region 读取Excel public static DataTable ImportExcel(string filePath) { try { //根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档 FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //判断文件后缀名是xls,还是xlsx,如果是xls,使用HSSFWorkbook;如果是xlsx,使用XSSFWorkbook XSSFWorkbook workbook = new XSSFWorkbook(file); //获取excel的第一个sheet ISheet sheet = workbook.GetSheetAt(0); DataTable table = new DataTable(); //获取sheet的首行 IRow headerRow = sheet.GetRow(0); if (headerRow == null) headerRow = sheet.GetRow(1); //一行最后一个方格的编号 即总的列数 int cellCount = headerRow.LastCellNum; for (int i = headerRow.FirstCellNum; i < cellCount; i++) { ICell cell = headerRow.GetCell(i); if (cell != null) { DataColumn column = new DataColumn(cell.StringCellValue); table.Columns.Add(column); } } //最后一列的标号 即总的行数 // int rowCount = sheet.LastRowNum; cellCount = table.Columns.Count; for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); if (row == null) continue; DataRow dataRow = table.NewRow(); bool isAdd = false; for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) == null) continue; //row.GetCell(j).SetCellType(CellType.STRING); if (row.GetCell(j) != null) { if (row.GetCell(j).CellType == CellType.NUMERIC) dataRow[j] = (int)(row.GetCell(j).NumericCellValue); else dataRow[j] = row.GetCell(j).StringCellValue; isAdd = true; } } if (isAdd) table.Rows.Add(dataRow); } workbook = null; sheet = null; return table; } catch (Exception ex) { MessageBox.Show(ex.ToString()); return null; } } #endregion

2019-03-29

winform切换窗口特效

内含十几种winform窗口切换特效,给死板的窗体程序注入一丝活力

2018-09-26

winform插件cefsharp65最新版完美demo,完美flash、html5、和调用摄像头支持,部署就能用

注意,要求.net版本至少在4.5.2,且是64位的解决方案,解决方案生成平台选anycpu是不行的,支持32位的我后续可能会上传; 该版本为cefsharp65,目前为止最新的版本,已集成好flash支持和支持摄像头调用,希望对你有用。ps(开发工具为vs2012)

2018-07-25

c#美化自定义控件库

美化版的自定义控件库,UI界面要求比较高的同学可以拿去用

2018-01-25

C#截图工具源码

非常实用的截图工具,非常非常具有研究价值,非常有技术深度,有兴趣的拿去吧

2018-01-24

vs可视化调试工具

vs可视化调试工具,兼容各个版本vs,原作者地址:http://www.cnblogs.com/cyq1162/p/6027051.html 上传只为留个备份

2017-09-19

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

TA关注的人

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