- 博客(57)
- 资源 (8)
- 收藏
- 关注

原创 导入Excel数据到db中
在导入的过程中可以从界面上的progressBar 和label控件看出当前的导入进度, 导入完成后, 弹出对话框提示共导入多少条数据,因为在线程中操作控件, 所以使用CheckForIllegalCrossThreadCalls = false;private void ImportXls() { Ch
2011-06-14 17:21:00
1147
1
原创 C# 结构和类
1 可以理解结构体为一种轻量的类。它使用值类型而不是引用类型。一般用于只存储少量字段的对象。 2. 结构是值类型的,类是引用类型的,对值类型赋值传递的是对象的副本,引用类型赋值传递的是对象的引用地址 3. 因为值类型存储在堆栈上,一旦出了作用域就释放掉了,而引用类型数据存储在托
2011-07-11 20:37:44
327
原创 sql 中char和varchar的区别
具考证:在字符长度一定时CHAR的性能比VARCHAR好,而在长度不确定时,CHAR类型的字段在使用时性能略差。这个在sqlServer数据库下面能够体现,并且这个字段是经常使用的。 区别: 1.CHAR的长度是固 定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“
2011-07-11 19:10:26
352
原创 C#使用Control.Invoke加载控件(防止闪烁)
Button btn = null; new Thread((ThreadStart)delegate { for (int i = 1; i <= 100; i++) {
2011-06-30 18:31:00
968
1
原创 使用Activator.CreateInstance完善简单工厂
前几天在项目中看到别人的工厂类使用Activator.CreateInstance() 之前用简单工厂都是用switch ...case ,之前没有用过便查了查资料,正是这个方法+ 反射简化了工厂模式,在需求增加的情况可以不动工厂类和客户端, 也符合开放封闭原则。 反射的地方用的不多, 后续会再加上一些例子。 public interface IFr
2011-06-16 09:57:00
1013
1
原创 Dictionary.TryGetValue(Tkey key, out Tvalue value)
Dictionary.TryGetValue(Tkey key , out Tvalue value) 返回值:bool 如果指定的key存在, bool为true, 并且返回key对应的value值, 如果指定的key值对应的value不存在时, bool为false, 并且返回null。
2011-06-15 14:42:00
841
原创 查询一条记录出现3次以上
<br />select [name] from testcountgroup by namehaving count(name)>=3
2011-05-05 09:42:00
656
转载 C# Event整理
C#中事件产生和实现的流程:1.定义A为产生事件的实例,a为A产生的一个事件2.定义B为接收事件的实例,b为处理事件的方法3.A由于用户(程序编写者或程序使用者)或者系统产生一个a事件(例如点击一个Button,产生一个Click事件)4.A通过事件列表中的委托对象将这个事件通知给B5.B接到一个事件通知(实际是B.b利用委托来实现事件的接收)6.调用B.b方法完成事件处理 public class A { public delegate voi
2011-03-18 10:08:00
321
原创 sql2000 去除重复数据
<br /> 昨天在现场发现数据库里突然出现了4000多条重复数据, 究其原因我还没琢磨明白, 后来在网上找到一个删除重复数据的sql语句, 经测试比较好用, 然后收藏起来。<br /> <br />delete from tab<br />where i
2011-03-18 08:57:00
538
原创 Proxy应用
1, proxy 为其他对象提供一种代理以控制对这个对象的访问。2. 应用: 远程代理。为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。当在应用程序中添加加web Reference时,会在项目中生成一个Web reference文件夹和文件,这些就是代理, 使得客户端可直接调用代理解决远程访问的问题。 虚拟代理。 根据需要创建开销很大的对象,通过它来存放实例化需要较长时间的对象。从而达到性能的最大优化。安全代理。用来控制真实对象的访问权限。 用于对象有不同的访问权
2011-03-15 11:24:00
295
转载 右下角弹出对话框
<br />using System;using System.Drawing;using System.Drawing.Imaging;using System.Drawing.Drawing2D;using System.Windows.Forms;using System.Runtime.InteropServices;namespace WindowsFormsApplication21{ /// <summary> /// TaskbarNotifier
2011-01-14 16:44:00
363
原创 命令模式作用
<br />1 它能较容易的设计一个命令队列;<br /> <br />2 在需要的情况下, 可以很容易的将命令计入日志。<br /> <br />3 允许接受请求的一方决定是否否决请求。<br /> <br />4 可以很容易的实现对请求的撤销和重做, 由于加进新的命令类不影响其他类,因此增加新的命令类很容易。<br /> <br />5 命令模式把请求一个操作的对象与知道怎么执行的一个操作对象分隔开。<br /> <br />
2011-01-06 13:48:00
420
原创 单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局访问点使得一个对象被访问,最好的办法就是让类自己保存它的惟一实例,这个类保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。第一种写法: 没有考虑线程安全public class Singleton { private static Singleton instance = null; private Singleton() { } pub
2011-01-06 10:34:00
275
原创 C#写入事件查看器
<br />public class EventLogHelper { private const string m_eventLogSource = "IssueVision Smart Client 1.0"; private EventLogHelper() { } // Checks for the existing of an event source. Returns true if the event // source exists; oth
2011-01-04 09:23:00
1102
原创 部门树
using (SqlConnection conn = new SqlConnection("server=ANBOO-FLY;database=State_power;uid=sa;pwd=0;")) { String sql="select * from Department"; SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
2010-12-24 10:14:00
479
原创 C#3.0 扩展方法
1. 扩展方法允许现存已编译类型(类,接口,结构)或者当前即将被编译的类型,在不需要被直接更新的情况下,获得功能上的扩张。2.当需要为类型添加功能但不拥有已有类型的代码时此时可以使用扩展方法。3.说明:扩展方法不会真正改变编译后的代码,只是在当前应用程序的上下文中为类型增加成员。4.扩展方法定义限制: 方法必须定义在静态类中, 因此方法也必须是静态的。扩展方法的第一个参数必须用this修饰,并且仅对第一个参数使用,(第一个参数决定调用方法的对象类型). 每一个扩展方法只可以被内存中正确的实力调用,或者通过其
2010-12-01 15:40:00
311
原创 窗体退出特效(由四周向中心缩小)
<br />public const Int32 AW_CENTER = 0x00000010;public const Int32 AW_HIDE = 0x00010000;[DllImport("user32.dll",CharSet=CharSet.Auto)] public static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);Form_Closing调用:(同时使用AW_CENTER和A
2010-11-30 09:57:00
410
原创 except, intersect关键字
<br />1. EXCEPT 从左查询中返回右查询没有找到的所有非重复值。<br /> <br />2. INTERSECT 返回 INTERSECT 操作数左右两边的两个查询都返回的所有非重复值。
2010-11-29 11:55:00
371
原创 将实际位置中照片转化为byte[]类型存入数据库
<br />pulic byte[] GetByteByImagePath(String str)<br />{<br /> byte[] xbyte=null;<br /> using(FileStream fs =new FileStream(str,FileMode.Open,FileAccess.Read))<br /> {<br /> using(BinaryReader br =new BinaryReader(fs))<br />
2010-11-26 12:10:00
965
原创 上位机
<br /> 上位机是指人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。 <br /> 在概念上 <br /> 控制者和提供服务者是上位机 <
2010-11-25 13:56:00
415
原创 UDP发送和接受测试
<br />服务端: <br /> <br /> private int port = 8001; private UdpClient udpClient; private IPEndPoint ipe; public Form1() { InitializeComponent(); } private void Fo
2010-11-22 15:08:00
921
转载 Winform窗体退出时淡化效果
<br /> protected override void OnClosing(CancelEventArgs e) { while (Opacity > 0.05f) { Opacity -= 0.05f; Application.DoEvents(); Thread.Sleep(75); }
2010-11-19 15:55:00
439
原创 用Linq判断一个数组是否包含另一个数组
<br /> static void Main(string[] args)<br /> {<br /> String[] sArr = { "1", "2", "3", "4" };<br /> String[] arr = { "2" };<br /> Console.WriteLine(sArr.Intersect(arr).Count() > 0);<br /> }
2010-11-18 18:11:00
1394
转载 winform界面特效
<br /> [DllImport("user32")] public static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); private const int AW_HOR_POSITIVE = 0x0001;//从左向右显示 private const int AW_HOR_NEGATIVE = 0x0002;//从右向左显示 pr
2010-11-17 17:19:00
529
转载 架构师给程序员的一封信
<br />下面的邮件是某Architect发给他的Engineering团队的(来源),我觉得挺不错的,翻译过来,我相信我们所有的程序员都能从中学到很多东西。下面是这封邮件——<br /> 每次当我开始做新的东西是我就会很兴奋。就算在软件圈里做了20年以后,每当开始新的旅程里,我都觉得我心中有一些东西不吐不快。这是我们大家一起的旅程。我强烈地相信我们详细规划的过程是很有乐趣的,富有挑战的和丰富多彩的。我想让这个旅程让你们难忘,并且能增添你们所有人的阅历。<br /> 这看起来有些唯心主义,不过,我想制
2010-11-17 15:19:00
236
原创 Control.InvokeRequired
<br /> 获取一个值,该值指示调用方在对控件进行方法调用时是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中。<br /> <br />
2010-11-08 17:20:00
332
转载 句柄
<br />所谓句柄实际上是一个数据,是一个Long (整长型)的数据。<br />句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 <br /><br />从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16
2010-10-25 16:52:00
233
原创 CheckedListBoxControl绑定数据
<br />for (int i = 0; i < dt.Rows.Count; i++) { CheckedListBoxItem item = new CheckedListBoxItem(); item.Value = dt.Rows[i]["UnitId"].ToString(); chklist_department.Items.Add(item);
2010-10-15 13:55:00
610
转载 C#数字小写转化为大写
<br />public static string GetNumToUpper(decimal Money) { string NumList = ""; string RmbList = ""; int NumLen = 0; int NumChar = 0; string N1 = ""; string N2 = "";
2010-09-06 17:13:00
498
原创 C#本质论十二----匿名方法
1。 所谓的匿名方法,就是没有实际方法声明的委托实例,也可以说他们的定义直接嵌套在代码中。A: //直接调用; BubbleSort(items, delegate(int first,int second) { return first } );B: ComparisonHandler handle
2010-09-02 14:40:00
287
原创 C#本质论十二----委托
<br /> public delegate bool ComparisonHandler(int first,int second); public class Program { public static bool GreaterThan(int first, int second) { return first > second; } public static bool A
2010-09-02 14:29:00
367
原创 C#将照片或图片转化为byte[]存入数据库,从数据库中读照片
1. 写入数据库 public static byte[] GetBytesByImage(PictureBox pb) { byte[] photo_byte= null; if (!pb.Image.Equals(null)) { using (MemoryStream ms = new MemoryStream()) {
2010-08-11 10:27:00
2709
原创 ControlSytles 枚举使用属性说明
<br />1。指定控件的样式和行为。<br /> <br /> UserPaint: 如果为true,控件将自行绘制,而不是通过操作系统来绘制,如果为false将不会引发Paint事件,此样式仅适用用派生自Control的类。<br /> AllPaintingInWmPaint :如果为 true,控件将忽略 WM_ERASEBKGND 窗口消息以减少闪烁。仅当 UserPaint 位设置为 true 时,才应当应用该样式。<br /> DoubleBuffer: 如果为true,
2010-08-10 11:21:00
241
原创 合并两个数组,并去除合并后的重复数据, 并排序
<br /> int[] A={1,2,2,3,4,5,6,6,6};<br /> int[] B={2,2,2,3,7,8,9,5};<br /> List<int> list = new List<int>(A);<br /> list.AddRange(B);<br /> list.Sort();<br /> //去除重复项<br /> foreac
2010-08-09 17:51:00
1182
原创 C#本质论---递增递减运算符
1。 递增或递减运算符的位置决定了运算顺序,从而影响了代码的功能。如果递增或递减运算符出现在操作数之前,那么表达式的返回值就是新值。例如:假定x为1,那么++x会返回2,
2010-08-05 08:58:00
505
原创 winform中让控件在窗体中居中(groupControl)
<br />1, 在Form中放一个控件,让其在启动时始终居中<br /> <br /> int gLeft = this.Width / 2 - groupControl1.Width / 2;<br /> int gTop = this.Height / 2 - groupControl1.Height / 2;<br /> <br /> groupControl1.Location = new Point(gLeft, gT
2010-08-04 14:21:00
1378
转载 ID卡和IC卡的区别
IC卡与ID卡的区别 <br /> <br /> 射频IC卡按照使用功能分为身份识别ID卡、消费的IC卡、物流标记卡、远距离识别卡;<br /> 目前,许多一卡通的项目,但对于是采用IC卡,还是采用ID卡做一卡通的问题上,还存在着很大的疑惑和误区。这里就谈一下这两种卡的两个重大区别,以帮助大家走出误区。<br />名词解释:<br /> IC卡全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。可读写,容量大,有加密功能,数据记录可*,使用更方便,
2010-07-15 09:39:00
1120
1
原创 C#封装C函数
<br />C :<br /> int ReadBaseInfos( char * Name, char * Gender, char * Folk,char *BirthDay, char * Code, char * Address,char *Agency, char * ExpireStart,char* ExpireEnd) <br /> <br /> <br />Name [out] 字符型指针,指向姓名信息。需要在调用时分配内存,字节数不小31
2010-07-15 09:38:00
496
原创 C#调用C++ DLL (关键字转换)
<br />1.C#封装C++结构体<br /> C++ :<br /> <br />typedef struct<br />{<br />char name[40]; //姓名<br />char sex[10]; //性别<br />char people[20]; //民族,护照识别时此项为空<br /> //备用,在识别护照时导出护照类型<br />}IDCARD_ALL;<br /> <br /> <br /> 封装成C#结构:<br /> public stru
2010-06-08 17:38:00
516
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人