摘要: 当我们用ListView显示数据时,有一种很人性化的设计便是单击ListView某一列,该列则以升序或降序排列。 自己定义一个类继承自IComparer接口 代码如下: [代码]在ListView的ColumnClick事件中调用代码如下 [代码]最后要说一下,当我们调用ListView的Sort方法时,就会去隐式调用ListViewItemSorter属性对应的类实现的ComPare方法 阅读全文
posted @ 2010-12-20 14:11 m苗子 阅读(6245) 评论(0) 推荐(1) 编辑
摘要: 有时候,我们可能会有这样的需求,希望程序只运行一个实例。因为可能运行多个实例会导致某一些问题。初步想法:添加一个标志变量,用来标志是否有程序实例在运行。可能一下想到定义一个bool变量,这个想法没错,但是应该用什么逻辑来表示这个bool变量的值呢?换句话说,应该在什么情况下给bool变量true值呢?这又是个问题,所以单纯的使用bool变量时行不通的,必须给它找个依托,于是我们还需要一个Mutex变量(一个信号量),如果信号量第一次创建,那么bool变量为true,如果信号已经存在,那么bool变量为false。代码如下:[代码]写这篇博文时,突然有一点感受那就是,代码的逻辑其实与生活是休戚相 阅读全文
posted @ 2010-12-20 10:59 m苗子 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 初步想法:是用TextBox.ReadOnly=true;但是这样连刷卡输入都会被禁掉第二种想法:判断是键盘输入还是用户刷卡 但是怎么判断呢 --键盘输入应该触发的是KeyDown事件之类的 那刷卡呢 结果也是触发的相同事件第三种想法——迂回:因为卡号是特定长度的 刷卡在短时间内就能输入到特定长度 而用户输入至少也要4s以上 通过这个时间判断 便可以分辨出来时手动输入还是刷卡输入我用了一个Timer控件 经过调试其属性Internal设置为200ms代码如下:代码 阅读全文
posted @ 2010-12-20 10:45 m苗子 阅读(1597) 评论(0) 推荐(0) 编辑