12 2010 档案

摘要:补充上一篇文章对于运行时常量,只能在初始化时赋值,或者是构造函数中复制。而不能在其他地方赋值,否则会提示错误。还是用上篇的例子,在Limitations中我定义了两个常量,但是对运行时常量没有赋值,[代码]该类库编译通过,没有问题。在主程序中调用时,我企图对运行时变量进行赋值,如下[代码]编译时,提示错误如下:提示我们,对于运行时变量,只能在构造函数和初始化时对其赋值。因为我用的运行时变量时静态的,所以错误提示我在静态构造函数中赋值,这没有冲突。 阅读全文
posted @ 2010-12-23 11:22 m苗子 阅读(293) 评论(0) 推荐(0) 编辑
摘要:C#常量主要分为两种:编译时和运行时常量编译时常量用关键字const来定义,运行时常量用关键字readonly来定义两者区别: 编译时常量,在编译时便用该常量的值代替常量变量。 运行时常量,在运行时返回一个运行时常量的变量引用这两种变量引用方式会导致什么不同呢,且看下面代码: 引用Effective C#中的例子:定义一个类库Limitation,其中呢定义了一个类Limitations,代码如下:[代码]该类中包含两个量,一个是编译时常量,一个是运行时常量我在主程序中,引用该类库,并调用该类的相关值,代码如下:[代码]运行结果:56789现在我更新一下程序集Limitation,代码如下:[ 阅读全文
posted @ 2010-12-23 11:14 m苗子 阅读(5796) 评论(0) 推荐(0) 编辑
摘要:一直以来对于lock关键字的用法都存有疑惑,也从网上看到很多关于他的资料包括MSDN,无奈MSDN讲述的真是让人上火。今天决定小小研究一下一直都知道lock是锁定某一变量从而实现对某一代码段的独占执行。但是对于lock(this)、lock(typeof(类名))、lock(字符串)、lock(公有变量) lock(私有变量) 有什么不同 却很是模糊我假定了这样一种场景:某个时刻,只允许一个客户在打电话定义一个客户类代码1:(lock(this))[代码]在主函数中调用,先实例化一个Custmer 实例[代码]可以预先分析一下结果,因为用的是lock(this),而this这时候代表的是实例c 阅读全文
posted @ 2010-12-21 17:38 m苗子 阅读(510) 评论(1) 推荐(0) 编辑
摘要:在做WinForm开发时,我们经常用到的提示恐怕就是MessageBox。但是有时提示过于频繁导致用户无法工作,比如,如果系统一直在循环尝试连接到服务器,如果连接不上则会循环提示用户无法连接服务器。这种情况下,恐怕用MessageBox就有点暴力啦。替代方法,可以换成把提示显示在窗体界面上,但是不够醒目,那怎样好呢,QQ提示窗,有动画的效果又不会频繁的提示,好的问题解决。那么看看怎么实现吧实现QQ提示框,核心是用到系统库user32.dll代码1:[代码]在添加了对库函数的引用之后,下一步就是创建一个窗体了,用来显示系统的提示消息。在窗体上放一个Label用来显示消息内容。代码2:[代码]在主 阅读全文
posted @ 2010-12-21 15:36 m苗子 阅读(2255) 评论(6) 推荐(2) 编辑
摘要:当我们用ListView显示数据时,有一种很人性化的设计便是单击ListView某一列,该列则以升序或降序排列。 自己定义一个类继承自IComparer接口 代码如下: [代码]在ListView的ColumnClick事件中调用代码如下 [代码]最后要说一下,当我们调用ListView的Sort方法时,就会去隐式调用ListViewItemSorter属性对应的类实现的ComPare方法 阅读全文
posted @ 2010-12-20 14:11 m苗子 阅读(6254) 评论(0) 推荐(1) 编辑
摘要:有时候,我们可能会有这样的需求,希望程序只运行一个实例。因为可能运行多个实例会导致某一些问题。初步想法:添加一个标志变量,用来标志是否有程序实例在运行。可能一下想到定义一个bool变量,这个想法没错,但是应该用什么逻辑来表示这个bool变量的值呢?换句话说,应该在什么情况下给bool变量true值呢?这又是个问题,所以单纯的使用bool变量时行不通的,必须给它找个依托,于是我们还需要一个Mutex变量(一个信号量),如果信号量第一次创建,那么bool变量为true,如果信号已经存在,那么bool变量为false。代码如下:[代码]写这篇博文时,突然有一点感受那就是,代码的逻辑其实与生活是休戚相 阅读全文
posted @ 2010-12-20 10:59 m苗子 阅读(362) 评论(0) 推荐(0) 编辑
摘要:初步想法:是用TextBox.ReadOnly=true;但是这样连刷卡输入都会被禁掉第二种想法:判断是键盘输入还是用户刷卡 但是怎么判断呢 --键盘输入应该触发的是KeyDown事件之类的 那刷卡呢 结果也是触发的相同事件第三种想法——迂回:因为卡号是特定长度的 刷卡在短时间内就能输入到特定长度 而用户输入至少也要4s以上 通过这个时间判断 便可以分辨出来时手动输入还是刷卡输入我用了一个Timer控件 经过调试其属性Internal设置为200ms代码如下:代码 阅读全文
posted @ 2010-12-20 10:45 m苗子 阅读(1627) 评论(0) 推荐(0) 编辑
摘要:在做C# WinForm开发时 一直都觉得.NET自身提供的控件组合到一起的界面太难看 于是在leader的推荐下 使用了DevComponets.DotNetBar 这个库里提供了许多功能类似于.Net控件功能的控件 不过 有一点就是界面做的很好看 仿office的 之前用着一直没有出现什么异常 今天用到其中的ListViewEx 在窗口最小化的时候产生异常 异常如下See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.****** 阅读全文
posted @ 2010-12-17 15:20 m苗子 阅读(6496) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示