代码改变世界

随笔分类 -  C#

C# 关于开发控件,如何自定义属性归类

2012-06-18 10:33 by Andrew.Wangxu, 1868 阅读, 收藏, 编辑
摘要: 首先介绍下属性分类结构: 绿色框:是总分类。 红色框:是子分类。 (当然子分类下面还可以包含子分类,跟Node节点一回事。) 灰色框:是子分类下面的属性. Q:如何将自己写的属性归类到指定的总分类? A:使用Category属性,例子如下: 阅读全文

C# 静态类的构造函数

2012-06-06 19:11 by Andrew.Wangxu, 1176 阅读, 收藏, 编辑
摘要: 简单介绍: 一个类只能有一个静态构造函数。 静态构造函数只能访问类的静态成员 静态构造函数不能传入参数 静态构造函数只会在该类第一次被使用的时候执行。 阅读全文

C# 控件开发中常用属性整理

2012-06-05 14:07 by Andrew.Wangxu, 327 阅读, 收藏, 编辑
摘要: Browsable 适用于属性和事件,指定属性或事件是否应该显示在属性浏览器中。 Category 适用于属性和事件,指定类别的名称,在该类别中将对属性或事件进行分组。当使用了类别时,组件属性和事件可以按逻辑分组显示在属性浏览器中。 Description 适用于属性和事件,定义一小块文本,该文本将在用户选择属性或事件时显示在属性浏览器底部。 阅读全文

C# 关于方法中的参数(可选参数和命名参数)

2012-05-31 10:56 by Andrew.Wangxu, 3578 阅读, 收藏, 编辑
摘要: 在阅读《CLR via C#(第三版)》第191页中看到方法参数的用法,这里将书本中的内容挑选一些关键的记录下来,内容如下: 设计一个方法的参数时,可为部分或全部参数分配默认值。然后,调用这些方法的代码可以选择不指定部分实参,接受其默认值。除此之外,调用方法时,还可通过指定参数名称的方式为其传递实参。以下代码演示了可选参数和命名参数的用法: 阅读全文

C# 中的拓展方法,以StringBuilder加上IndexOf方法举例

2012-05-30 20:32 by Andrew.Wangxu, 2859 阅读, 收藏, 编辑
摘要: 大家都知道StringBuilder是处理字符串的首选,我不太明白为什么StringBuilder提供的方法竟然比string类要少,挺奇怪。 废话不多说,直接图文跟着走吧。 上图先(我写好的拓展方法): 阅读全文

C#中的不同类型之间的显式与隐式转换实现

2012-05-30 16:02 by Andrew.Wangxu, 601 阅读, 收藏, 编辑
摘要: 在项目中可能经常遇到不同类型之间的转换, 如 int转换为byte double转换为int。 那么这些显式或隐式转换是如何实现的呢,下面也是以User对象举例。 首先贴上来User.cs的所有属性 阅读全文

在C#中的operator重载操作符

2012-05-30 15:01 by Andrew.Wangxu, 4011 阅读, 收藏, 编辑
摘要: 业务需求: 在程序中要求将两个用户的用户名和他们的持有金额的相加,如何来实现呢? 一般实现如下: User user1 = new User(); user1.Name = "张三"; user1.Money = 20; User user2 = new User(); user2.Name = "李四"; user2.Money = 15; //将两个对象相加,得到用户名和金额合计 User user3 = new User(); user3.Name = user1.Name +","+ user2.Name; user3.Money = user1.Money + user2.Money; //打印结果: //user3.Name :“张三,李四” //user3.Moeny:“35”; 试想,能不能将user3那三行代码改为: User user3 = user1 + user2; 阅读全文

关于C#的dynamic类型,简单演示及说明

2012-05-30 11:06 by Andrew.Wangxu, 2404 阅读, 收藏, 编辑
摘要: 在阅读《CLR via C# (第三版)》第132页看到dynamic这个类型,感觉挺有用的。 记录下来日后查用以及跟园友们分享,内容如下: 为了方便开发人员使用反射或者与基本组件通信,C#编译器允许将一个表达式的类型标记为 dynamic。还可以将一个表达式的结果放到一个变量中,并将变量的类型标记为dynamic。然后,可以用这个 dynamic 表达式/变量调用一个成员,比如字段、属性/索引器、方法、委托以及一元/二元/转换操作符。代码用 dynamic 表达式/变量来调用一个成员时,编译器会生成特殊的 IL 代码来描述所需的操作。这种特殊的代码成为 payload(有效载荷)。在运行时,payload 代码根据当前由 dynamic 表达式/变量引用的对象的实际类型来决定具体执行的操作。 阅读全文

C# 多个(N个)ListBox之间的拖动方法

2012-05-25 11:16 by Andrew.Wangxu, 1156 阅读, 收藏, 编辑
摘要: 需求说明:在窗体界面中有多个ListBox要实现之间的数据拖动,下面是封装的一个方法,实现N个ListBox的数据拖放操作。 可任意拖放数据到任意的ListBox 附上截图、代码、示例项目文件: 阅读全文

在VS中折叠所有代码或展开所有代码

2012-05-24 10:59 by Andrew.Wangxu, 972 阅读, 收藏, 编辑
摘要: Ctrl-M-O 折叠所有方法Ctrl-M-L展开所有方法Ctrl-M-P 展开所有方法并停止大纲显示(不可以再折叠了)Ctrl-M-M 折叠或展开当前方法参考:http://www.wxzzz.com/?id=93 阅读全文

C# 设置当前程序调用的dll文件以及其他文件的寻址路径

2012-04-23 11:47 by Andrew.Wangxu, 931 阅读, 收藏, 编辑
摘要: 文件: App.exe为主程序 A.dll为需要调用的bll文件 B.dll为需要调用的bll文件 一般情况下,我们的exe程序会调用一些dll。 由于项目可能较大,有很多的dll文件需要调用,并不可能将这些文件全部放在跟exe同一目录。 但是默认情况下app.exe只会在当前目录和系统库的目录寻找调用的dll 阅读全文

C# 使用反射设置某个对象的属性或读取某个对象的属性

2012-03-23 04:14 by Andrew.Wangxu, 587 阅读, 收藏, 编辑
摘要: /// /// 获取对象中的属性值 /// /// 属性名 /// 对象 /// public string GetModelValue(string FieldName, object obj) 阅读全文

C# 泛型约束List<T> (转)

2012-03-21 14:56 by Andrew.Wangxu, 3260 阅读, 收藏, 编辑
摘要: 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。 在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。 阅读全文

C# 使用反射技术实例化指定的类

2012-03-20 22:56 by Andrew.Wangxu, 1349 阅读, 收藏, 编辑
摘要: 有时候不确定该项目会有多少个类,是否要随着功能的增加去写无数个IF 或者Switch 来判断该执行哪一个类里面的方法? 这时候反射技术的优势就出来了,下面代码是利用反射来实例化某个类。 在我的类中,我用了2个参数 分别是int对象,和String 阅读全文

NHibernate *** is not mapped 错误解决笔记

2012-03-20 19:56 by Andrew.Wangxu, 652 阅读, 收藏, 编辑
摘要: 如果确认大小写等手写没有错误的话,把.hbm.xml文件属性中的生成操作,设为嵌入式资源就可以了 阅读全文

C# DES加密解密类分享

2012-03-16 20:44 by Andrew.Wangxu, 333 阅读, 收藏, 编辑
摘要: 直接上代码了。 public class DESEncrypt { //密钥 private static string key = "mykey"; /// /// DES加密 /// /// 需要加密的字符串 /// 返回已加密的字符串 public static string DesEncrypt(string encryptString) 阅读全文

C# 序列化与反序列化方法

2012-03-16 20:42 by Andrew.Wangxu, 308 阅读, 收藏, 编辑
摘要: 序列化数据方法: /// /// 序列化数据 /// /// 需要序列化的对象 /// public static byte[] SerializeData(object objData) { MemoryStream ms = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, objData); ms.Close(); return ms.ToArray(); } 阅读全文

分享一份关键字高亮的代码编辑控件 FOR C#

2012-03-16 20:38 by Andrew.Wangxu, 548 阅读, 收藏, 编辑
摘要: TextEditor控件分享 设定语言方法为,控件名.SetHighlighting("C#"); 则可以让该文本编辑控件为C#语法高亮效果 阅读全文

Dev控件使用 - 使用xtraTabbedMdiManager控件制作浏览器的标签效果

2012-01-20 11:00 by Andrew.Wangxu, 1147 阅读, 收藏, 编辑
摘要: 1. 添加一个xtraTabbedMdiManager1控件,然后将MdiParent属性设为“无” 2. 使用如下代码即可: xtraTabbedMdiManager1.MdiParent = this; FrmMoney frmMoney = new FrmMoney(); frmMoney.MdiParent = this; frmMoney.Show();选项卡切换: xtraTabbedMdiManager1.SelectedPage = xtraTabbedMdiManager1.Pages[frmMoney];设置标签拥有关闭按钮: this.xt... 阅读全文

Dev控件使用 - 皮肤

2012-01-20 10:59 by Andrew.Wangxu, 902 阅读, 收藏, 编辑
摘要: 一、皮肤的使用 拖入defaultLookAndFeel 组件到窗体中 拖入ribbonControl 控件到窗体中 将窗体继承为 DevExpress.XtraBars.Ribbon.RibbonForm 将窗体的AllowFormGlass属性改为 False 引用DevExpress.BonusSkins 引用DevExpress.OfficeSkins 在Main方法中加入代码DevExpress.UserSkins.BonusSkins.Register(); 7.DevExpress.UserSkins.OfficeSkins.Register(); 阅读全文