
C#
琚建飞
这个作者很懒,什么都没留下…
展开
-
【C#工具】后宫佳丽三千
雅俗共赏。原创 2019-11-08 23:18:27 · 478 阅读 · 0 评论 -
C#中的DLL文件
百度百科 DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。使用DLL文件的好处是程序不需要在运行之初加载所有代码,只有在程序需要某个函数的时候才从DLL中取出。另外,使用DLL文件还可以减少程序的体积。一个DLL文件的生成过程新建项目-类库-名称为BuildeADll。新建一个类,名称为Algorithms。在类原创 2017-12-08 20:09:06 · 5968 阅读 · 13 评论 -
正则表达式
检索和替换原创 2017-12-04 23:00:08 · 476 阅读 · 3 评论 -
String与StringBuilder
前言 String:表示不可变字符字符串。 StringBuilder:表示可变字符字符串。 String类型的值不可改变,每次对其操作都会返回一个新的String对象。 StringBuilder是一个可变的字符串类,一旦创建类的实例后,可以对其进行添加,修改,替换,删除等操作。使用String的情况程序中对字符串进行的更改的数量很小。这种情况下String原创 2017-11-21 18:44:33 · 707 阅读 · 16 评论 -
C#反射详解
原文链接:https://www.cnblogs.com/Stephenchao/p/4481995.html 反射定义 反射提供了封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了特性,可以利用反射对它们进行访问。【MSDN】使用场景需要访问程序元数据转载 2017-11-20 22:28:04 · 37132 阅读 · 17 评论 -
Krypton控件组简介与使用
前言 项目中涉及到一些控件,之前没有接触过,后来知道都是引用的第三方控件组Krypton,于是从网下载了源码来了解一下,刚开始接触,在这里做个简单的笔记,以备后用。源码 把源码下载(点击下载)下来后也没怎么看,不过通过Krypton了解到这些功能很强大很漂亮的控件都是大牛通过代码设计出来的,敬佩之心油然而生。源码较大,可以直接看生成的bin文件(点击下载),效果展示如图1-1所原创 2017-11-15 16:38:12 · 12412 阅读 · 18 评论 -
枚举与下拉框配合使用
前言 下拉框控件一般用于显示一组有关联的值,并且这组值是相对固定的,如:选择性别就可以用下拉框来做。我之前的做法是将性别属性设置成字符串类型的,然后将下拉框的Text值,直接通过属性传过去。而现在项目中大多数是用枚举来代替字符串,也就是将属性设置成枚举类型的,并且在枚举的值上添加Attribute来配合使用,让代码看起来更加的清晰。下面通过实例来观察一下效果。实体类publi原创 2017-11-15 10:36:40 · 5764 阅读 · 6 评论 -
关键字this的三种用法
用法一:this代表当前类的实例对象public class Test{ private string scope = "全局变量"; public string getResult() { string scope = "局部变量"; // this代表Test的实例对象 // 所以this.scope对应的是全局变量原创 2017-11-14 18:00:47 · 1319 阅读 · 9 评论 -
Convert.ToInt32()、Int.Parse()、Int.TryParse()和(int)
1、转换对象不同 Convert.ToInt32()中可以为多种类型(除了DateTime,转换DateTime类型数据始终会报InvalidCastException异常),它适合将Object类型转换为int类型。int.Parse()和int.TryParse()中只能是整型字符串类型(即各种整型ToString()之后的形式,不能为浮点型,如4.5,否则int.Parse()就会出现转载 2017-11-09 14:21:43 · 766 阅读 · 5 评论 -
多个panel控件重合使用时,某个panel控件不显示问题?
前言 在设计一个界面时,为了节省空间,我将控件分类后分别放到了三个重合放置的Panel中,并添加三个了按钮作为调出对应Panel的媒介,如图1-1所示。 图1-1 简化效果图 按钮的调用代码如下:private void btnOne_Click(object sender, EventArgs e){ panel1.BringToFront();}priva原创 2017-11-08 22:36:34 · 3562 阅读 · 3 评论 -
多线程与UI操作
前言 为了让程序尽快响应用户操作,在开发Winform应用程序时经常会使用多线程,对于耗时的操作如果不使用多线程将会使UI界面长时间处于停滞状态,这种情况是用户非常不愿意看到的,怎么办呢?用多线程。它可以很好的解决这个问题。下面是使用多线程操作界面UI的代码:private void btnTest_Click(object sender, EventArgs e){ Th原创 2017-11-08 21:09:04 · 1642 阅读 · 6 评论 -
利用Lambda表达式从实体集合中筛选出符合条件的实体集合
前言 已知存在两张表:表A和表B,表A中有一个字段存储的是表B的部分Id集合,以字符串的形式存储,如图1-1所示: 图1-1 表A中的字段 现在我获取到了表A中这个字段的值和表B中所有数据的实体集合,怎么用Lambda表达式找到表B中这些Id对应的实体的集合呢?这句话我写的可能有点绕,你可以多读几遍。解决方案List functionItemList = APF原创 2017-11-02 17:20:32 · 23111 阅读 · 12 评论 -
Winform界面调整注意事项
背景 一直以来,做Winform程序,界面调整基本按照感觉来做,不系统,没套路,所以做出来的界面都是如图1-1所示效果。 图1-1 界面调整前 后来经组长指点,大致对界面改进了一下,改进后的效果如图1-2所示,基本还算满意。 图1-2 界面调整后 组长对我的建议就是模仿Win10的界面去做,然后我就做了一个Demo,如图1-3: 图1-3 图右为Demo界面原创 2017-11-01 16:40:53 · 909 阅读 · 6 评论 -
文本框判空,如何提高灵活性?
做Winform界面的时候,上面有六个文本框需要判空,之前的思路大致是这样的,代码如下:if (txtUserName.Text.Trim() == ""){ MessageBox.Show("用户名不可以为空!", "温馨提示"); txtUserName.Focus();}else if (txtPassword.Text.Trim() == ""){原创 2017-11-01 14:11:07 · 609 阅读 · 2 评论 -
字符串转枚举
private void btnStart_Click(object sender, EventArgs e){ string testText = "Sunday"; Days2 d = (Days2)Enum.Parse(typeof(Days2), testText); MessageBox.Show(d.ToString());}enum Days2{原创 2017-10-30 17:24:15 · 3319 阅读 · 4 评论 -
简单理解委托和事件
委托什么是委托? 委托就是持有一个或者多个方法的对象!并且该对象可以执行,可以传递。声明委托类型? 委托可以持有方法,那么持有什么样的方法呢? 可以声明,它是一种引用类型。delegate void ActCute();定义委托类型的对象? 既然是种类型,就可以定义该类型的对象。ActCute actCute;给委托对象赋值?clas原创 2017-10-20 21:56:20 · 711 阅读 · 15 评论 -
【XML】C#中XML文件增删改查简单应用
前言 XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用的多,但XML及其简单,易于掌握和使用。微软也提供了一系列的类库来帮助我们在应用程序中存储XML文件。很多时候程序需要用XML来保存数据,或者将数据以XML的格式保存到SQLServer数据库。 在程序中访问进而操作XML文件一般有两种模型,分别是D原创 2017-09-29 00:32:57 · 8367 阅读 · 45 评论 -
【C#】数组合并
遇到一个需求,需要数组进行有序合并,发现可以直接调用Array的Copy方法来完成,代码如下:byte[] a = { 1, 2, 3 };byte[] b = { 4, 5, 6 };byte[] newArray = new byte[a.Length + b.Length];Array.Copy(a, 0, newArray, 0, a.Length);Array.Copy(原创 2017-09-24 23:09:28 · 5269 阅读 · 31 评论 -
【C#】将文本保存到本地txt文件中
界面 代码private void btnSave_Click(object sender, EventArgs e){ string result = txtWrite.Text.Trim(); //输入文本 StreamWriter sw = File.AppendText(@"D:\\test.txt"); //保存到指定路径 sw.Write(res原创 2017-09-17 21:24:41 · 19299 阅读 · 17 评论 -
【SQL Server】数据库异地备份
需求 服务器上的数据库需要手动备份到本地电脑。 思路 ①在服务器上执行数据库备份的sql语句,将其备份到设置好共享文件夹。backup database OOP to disk='D:/共享/OOP.bak' //OOP为数据库名称,单引号中路径为自定义的保存路径 ②再通过命令将共享文件夹中的数据库备份文件取到本地电脑。 实现private void btn原创 2017-09-17 20:46:15 · 2275 阅读 · 22 评论 -
【C#】委托和事件实例
简单的委托 当建立委托对象时,委托的参数类型必须与委托方法相对应。只要向建立委托对象的构造函数中输入方法名称example.Method,委托就会直接绑定此方法。使用myDelegate.Invoke(string message),就能显式调用委托方法。但在实际的操作中,我们无须用到 Invoke 方法,而只要直接使用myDelegate(string message),就能调用委托方法。原创 2017-09-03 17:50:51 · 1784 阅读 · 10 评论 -
【C#】委托和事件
定义 委托是对函数的封装,可以当作给方法的特征指定一个名称。 而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。 委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为【MSDN】。委托用delegate来声明。而事件是说在发生其他类或对象关注的事情时,类或对象可通过事件通知它们【MSDN】。事件对象用event关键字声明。原创 2017-09-03 16:34:53 · 610 阅读 · 12 评论 -
【C#】Attribute
原文链接:http://bbs.51aspx.com/showtopic-33963.html 前言 作为一个.NET开发人员,了解Attribute的重要性,用.NET大师Jeffrey Richter的话就是“任何.NET Framework 开发人员都有必要对定制attribute有一个牢靠的掌握”,所以掌握Attitude,这是必须的! 什么是Attribute(特性)转载 2017-09-02 19:19:32 · 2420 阅读 · 3 评论 -
【C#】枚举与Description配合使用实例
实现方式一private void btnDescription_Click(object sender, EventArgs e){ AlignStyle alst = AlignStyle.top; Type t = alst.GetType(); FieldInfo info = t.GetField(Enum.GetName(t, alst));原创 2017-09-02 16:56:34 · 7861 阅读 · 3 评论 -
【C#】Dictionary
原文链接:https://jingyan.baidu.com/article/9989c7460ab872f648ecfeed.html 基本认识 在C#中,Dictionary提供快速的基于键值的元素查找。他的结构是这样的:Dictionary ,当你有很多元素的时候可以使用它。它包含在System.Collections.Generic名空间中。在使用前,你必须声明它的键类型和值转载 2017-09-01 22:39:00 · 680 阅读 · 5 评论 -
【C#】枚举类型
枚举类型的介绍 枚举类型是由一组特定常量构成的一组数据结构,是值类型的一种特殊形式,当需要一个由指定常量集合组成的数据类型时,使用枚举类型。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。枚举类型是使用 enum 关键字声明的。原创 2017-09-01 21:44:40 · 413 阅读 · 5 评论 -
Lambda表达式
Lambda表达式格式 Lambda表达式是在C#3.0中提出的,Lambda表达式可以应用于任何匿名方法可以应用的场合,而且比匿名方法更节省编码时间。 Lambda表达式可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。一个Lambda表达式是这样编写的:一个参数列表、Lambda运算符(=>)和表达式(或语句块),例如:(int x, int y) => (x *原创 2017-08-30 22:44:41 · 457 阅读 · 11 评论 -
【C#】var关键字
原文链接:http://blog.csdn.net/allenjy123/article/details/7228964 var概述 var关键字是C#3.0开始新增的特性,称为推断类型(弱类型)。由var声明的变量,编译器会根据上下文来判断你到底是想用什么类型。 我们可以赋予局部变量推断类型var而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型转载 2017-08-30 20:45:52 · 1429 阅读 · 10 评论 -
【C#】ref和out关键字
传值和传址 传参有两种方式:传值和传址。 传值调用,意味着方法将获得参数值的一份拷贝。方法可以放心的修改这份拷贝,而不必担心会修改实际传递给他们的形参。 传址调用,实质上也是一种传值调用,不过这个值是地址值。形参是一个地址,它指向的是已经在其他地方分配好内存的空间。实例分析private void btnTestRef_Click(object sender, E原创 2017-08-29 20:51:16 · 791 阅读 · 18 评论 -
【C#】错误“System.NullReferenceException:未将对象引用设置到对象的实例“解析
错误原因分析 首先,你要知道,在.net里面所有操作的变量都是对象。 一般的标示符,如int,string,char等等,最后都会转换为System命名空间下面的类名(如Int32,String,Char等等),当然类实例化的就更不用说了。对象就必然存在若干的属性和方法。你要操作一个对象,也必然是操作它的属性或者方法。 “未将对象引用设置到对象的实例”,也就是说你要调用对象实例里原创 2017-08-27 10:29:19 · 142958 阅读 · 25 评论 -
【C#】get和set详解
原文链接:http://blog.sina.com.cn/s/blog_82526aa60100txtx.html 在程序中经常碰到get、set,不甚明白,在网上查询时也说的迷迷糊糊,所以整理下,以学的明白透彻点。 有两个类person:public class person{ public string name;}public class person转载 2017-08-22 21:30:23 · 29160 阅读 · 17 评论 -
【C#】程序编写规范
前言 编码规范保证了程序的一致性和统一性,对程序员尤为重要,原因有以下几个: 1、一个软件的生命周期中,80%的花费在于维护。 2、几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。 3、编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。每个软件开发人员都必须遵守统一的编码规范。 4、代码尽量简单直白。命名规范1、说原创 2017-08-21 22:10:26 · 806 阅读 · 12 评论 -
B窗体关闭时刷新A窗体的DataGridView
需求:A窗体中有一个DataGridView和一个添加按钮,我需要在DataGridView中添加一行信息,要求添加后DataGridView自动刷新。 实现思路:单击添加按钮,弹出B窗体,手动添加信息,单击保存按钮,并依次执行三个操作,保存到数据库,关闭B窗体,A窗体中DataGridView中信息重新加载。重点:如何在B窗体中调用A窗体的刷新方法? A窗体代码private voi原创 2017-08-09 21:11:47 · 2240 阅读 · 10 评论 -
查询选定日期范围内相关数据
前言 今天用到一个功能,利用两个DateTimePicker控件来选定一个日期范围作为查询条件,从数据库中取出这段时间内添加的信息。之前也记得用过,不过没有做笔记,不得不又花了些时间才找到,所以现在记录下来,以备不时之需。 效果展示实现代码DateTable dt = new DateTable();//获取DateTimePicker日期DateTim...原创 2017-04-22 17:17:08 · 4599 阅读 · 40 评论 -
EF零基础做出winform登录实例
注:EF登录实例教程。使用工具:SQL Server、Visual Studio1、新建一个数据表,起名Users,新建三个字段ID,UserName,Password。如果自己懒的建,直接复制下面的代码到sql中执行即可。create database EF //新建数据库create table Users ( //新建数据库表 ID int identity原创 2017-03-15 11:37:28 · 9938 阅读 · 14 评论 -
EF登录实例
前言 学习EF发现,泛型,Lambda表达式,标准查询运算符都有所涉及,可是自己对这些知识还是有些陌生,目前阶段只能照葫芦画瓢的用EF敲出一个简单登录实例,具体的原理有待进一步学习。其核心代码其实只有两行而已://判断用户名是否存在List list = db.Users.Where(u => u.UserName == uid).ToList();//判断密码是否正确List原创 2017-03-14 22:11:27 · 3229 阅读 · 11 评论 -
EF初识
前言 定义:EF,全称Entity Framework,基于Ado.net的数据持久层框架。 特点:支持多种数据库(MSSQL、Oracle、DB2);强劲的映射引擎,能很好地支持存储过程;提供Visual Studio集成工具,进行可视化操作;能够与Asp.Net,WPF,WCF进行很好的集成。 原理:利用xml配置文件实现对象关系映射。自动把对象转成SQL语句,存储到数据库。原创 2017-03-13 16:03:35 · 803 阅读 · 11 评论 -
【C#】数组,集合,泛型
数组Animal[] arrayAnimal = new Animal[3];arrayAnimal[0] = new Cat("嘻嘻");arrayAnimal[1] = new Cat("哈哈");arrayAnimal[2] = new Cat("嘿嘿");优点:在内存中连续存储。 缺点:创建时必须指定数组变量大小,两个元素之间添加元素比较困难。集合 .Ne原创 2017-02-28 15:41:57 · 1029 阅读 · 12 评论 -
SQLHelper+配置文件+参数查询
基础代码private void btnLogin_Click(object sender, EventArgs e){ string uid = txtUserName.Text.Trim(); string pwd = txtPwd.Text.Trim(); SqlParameter[] spa = new SqlParameter[]{ ne原创 2017-02-13 20:38:18 · 969 阅读 · 6 评论 -
登录次数限制实例
业务逻辑1、根据用户名从数据库中取出一行数据,并根据数据库服务器时间,算出上次限制登录的时间和当前时间的时间间隔。 2、判断此用户时间间隔过了15分钟没有。如果没有,则给出禁止登录的提示;如果超过15分钟,则判断密码是否正确。 3、如果密码正确,提示登录成功并重置错误次数;如果密码不正确,则给出密码错误提示并更新数据库错误次数。并判断是否够3次了。 4、如果够3次的话,就记录错误时间原创 2017-02-13 17:07:42 · 7032 阅读 · 7 评论