自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 .netcore Swagger

1.新建netcore web api项目2.安装下列3个NuGet package3.在startup.cs的ConfigureServices方法里用AddSwaggerGen来添加服务在Configure里加上UseSwagger和UseSwaggerUI public class Startup { public Startup(IConfiguration configuration) { Configuration = c

2020-06-27 17:01:27 341

原创 TopShelf和Quartz实现Windows Service定时任务

Net Core 控制台应用NutGet安装TopShelf和Quartz包1.Job类继承Quartz.IJob接口,实现Excute方法using Quartz;using System;using System.IO;using System.Threading.Tasks;namespace TopShelfAndQuartz{ public class Jo...

2020-03-21 15:35:06 979

原创 生产者消费者模式,BlockingCollection

生产者消费者模式可以让生产者和消费者互不干扰,且有个缓存区解。生产者把数据放入缓冲区,而消费者从缓冲区取出数据,不必生产一个才能消费一个,消费完一个才能生产下一个。 class Program { static void Main(string[] args) { Task.Factory.StartNew(() =&g...

2019-03-11 21:21:02 922

原创 反射实现IOC(控制反转)

假设顶层Top类里要用到A,B类的实例 。如果Top类里直接new A,B对象,这样耦合度高,不易维护。我们可以用反射实现DI(依赖注入,和控制反转是一个意思)来解耦。将A B类注入到Top类里。下面例子写的比较简单namespace Test{ class Program { static void Main(string[] args) ...

2019-03-09 12:30:07 420

原创 string.CompareOrdinal(效率高),checked(检查溢出)

几种比较方法的效率 int num = 10000000; string str1 = "abcdaefvff"; string str2 = "abcdsafsafed"; Stopwatch stopwatch = new Stopwatch(); stopwatch...

2019-03-07 19:22:26 1014

原创 自定义特性Attribute

特性attribute就是一个类,可以应用在程序集,类,属性,方法等元素。在运行的时候通过反射获取特性attribute的信息。下面示例是对属性做Trim标记,可以在对象层面调用一次Trim(),就将标记了Trim特性的属性作Trim()处理。using System;namespace ConsoleApp1{ //定制特性,特性也是一个类,自定义特性须继承System...

2019-02-14 18:12:43 395

原创 自定义类型转换

class Program { static void Main(string[] args) { string name = "Tony"; Person p = name; Person p1 = new Person("Jack"); string nam...

2019-02-14 17:19:11 236

原创 《编写高质量代码改善C#程序的157个建议》笔记

**重写Equals时也应重写GetHasgCode**如果对象要作为Dictionary的Key值,那么重写Equals时也应重写GetHashCode。比如下列代码,人的身份ID一样应该就是同一个人,那么我们期望得到的输出是true,true。但是不重写GetHasgCode,得到的输出是true,false。因为Dictionary是根据先Key值的HashCode再根据Equals来查找...

2019-01-17 17:10:36 613

原创 反射,插件接口

先创建下图的一个窗体,插件下没添加项目,是留给反射加载.dll插件的。在debug目录下加一个Plugin文件夹,将插件的.dll文件放在此文件夹下可以生效。 给方案添加一个单独的项目来写规范插件的接口,因为需要生成一个.dll给写插件的人调用 接口的代码如下:using System.Windows.Forms;namespace NotePad.PluginInterfac...

2018-11-05 13:36:24 207

原创 笔记(线程)

Interrupt和Abortclass Program { static void Main(string[] args) { Thread thread = new Thread(Run); thread.Start(); Thread.Sleep(2500); ...

2018-08-06 16:07:00 281

原创 控制面板设置小数点和数字分组符合后容易引起的bug

先了解一下通过CultureInfo.CurrentUICulture和CultureInfo.InvariantCulture与控制面板设置的关系 控制面板设置如图 public partial class Form1 : Form { public Form1() { System.Globalization.Cul...

2018-05-16 17:49:01 911

原创 Parallel,Task

Parallel.Invoke(Run1, Run2); // 尽可能并行执行提供的每个操作。//执行 for(在 Visual Basic 中为 For)循环,其中可能会并行运行迭代。 Object obj = new object(); int num = 0; Parallel.For(0, 1000, i =>

2018-01-26 16:15:29 384

原创 自定义进度条控件(BackgroundWorker)

自定义了两种样式,如下图。代码如下ProgressForm:namespace ProgressForm{ public partial class ProgressForm : Form { private UserCircularProgress circularProgress; private UserProgressBar progress

2018-01-17 16:28:51 353

原创 生成CSV文件

CSV(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号) CSV文件比较简单,导出表格时格式没有要求的可以导出CSV文件用excel打开生成CSV文件代码。namespace CreatCSVFile{ public partial class Form1 : Form { public Form1()

2018-01-03 18:04:47 423

原创 Open XML SDK生成word

首先 下载Open XML SDK 安装后会有 DocumentFormat.OpenXml.dll ,项目中需引用。 下载的时候将 OpenXMLSDKTool.msi 也勾上一并下载,安装后会有反编译器 OpenXmlSdkTool.exe 可以帮助编写代码 如图: 写了一些封装数据的类,部分代码 class ReportType { public boo

2018-01-03 15:12:59 3284 1

原创 索引器,枚举器,迭代器,比较器

索引器实现for循环namespace ConsoleApplication1{ class Program { static void Main(string[] args) { People people = new People(); people[0] = "a"; pe

2017-10-11 16:38:57 243

原创 克隆(浅复制与深复制),序列化

克隆需实现ICloneable接口class Program { static void Main(string[] args) { ArrayList array =new ArrayList(); Person a = new Person(); a.name = "aaa"...

2017-09-20 17:59:15 271

原创 笔记(显示实现接口,实现IComparable,IComparer接口来排序)

显示实现接口 如果类继承两个接口中有相同方法,可用显示接口实现 class Program { static void Main(string[] args) { A a = new A(); a.run(); // "run" B b = new A();

2017-09-20 14:56:06 465

原创 动态添加dotNetBarManager的dockSite

先在设计界面(我这里用的用户控件)添加控件dotNetBarManager控件 如图所示点击Enaable Docunment Docking 会变成下图 然后打开对应的.Designer.cs文件,主要关注this.dotNetBarManager1.FillDockSite=的那个dockSite。 注释掉有下划线的两行代码(动态加载就是用这两行代码),或者在设计界面选中bar

2017-07-21 18:08:54 2064 1

原创 C#压缩解压(可任意选择多个文件夹,文件一起压缩);BackgroundWorker配合进度条的使用

如,下图操作,任意选择要压缩的文件夹,文件,设置压缩后保存的文件,点压缩按钮执行效果如下执行完的test1.zip压缩需要引用using ICSharpCode.SharpZipLib.Zip; 可在http://www.icsharpcode.net/opensource/sharpziplib/Default.aspx下载首先看BackgroundWorker初始...

2017-07-11 16:48:56 4217

原创 笔记(RemoveAll;DataGridView用linq查询;动态添加控件时闪烁问题)

2.DataGridView用linq查询IEnumerable<DataGridViewRow> emplist = this.dataGridEmp.Rows.Cast<DataGridViewRow>();//扩展方法,转换类型var query = emplist.Max(s => s.Cells[1].Value);//查询第二列的最大值3.动...

2017-05-16 10:29:20 363

原创 窗体之间传值(委托,事件,Owner,封装属性)

实现点击Form1的send按钮则打开Form2,并将Form1文本框的值传给Form2。点击Form2的OK按钮则关闭Form2并将文本框的值传回Form1。 点击send打开Form2并传值有多种方式 委托传值 可以在new Form2时将值传给Form2,这时需要更改Form2的构造函数来接收,由于在Form2中不能调用Form1的控件,所以更改Form1的文本框的方法写在Form1里,

2017-04-24 15:02:31 481

原创 利用资源文件实现窗体多语言

如图,将Form的Localizable设为True,然后选择需要的Language比如英语这时更改窗体控件的文本,Form下会出现.en-GB.resx资源文件,再更改Form的Language属性为中文简体,更改窗体控件的文本,Form下会出现.zn-CN.resx资源文件修改的控件的文本存在.en-GB.resx和.zn-CN.resx中,如下图:

2017-04-05 17:08:16 1253

原创 通过建立依赖关系使文件在VS中显示位置改变(比如.cs下显示其他.cs)

比如 需变成如下效果: 那么可以用文本方式打开项目的.csproj文件,将 改成 保存,最后重新加载项目即可。

2017-04-01 13:54:43 378

空空如也

空空如也

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

TA关注的人

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