如题
之所以有这种考虑,是因为在写磁卡的时候,写入磁卡的信息是加密的,与存入数据库的信息不一样,但解密后能找到,在读卡的时候解密就可以了(之所以讨麻烦加密解密,是因为读卡器是模拟键盘的,这样随便都可以读出信息,若不是在自己的系统中读卡,不希望相关的信息被读出)。但是又不能屏蔽掉键盘输入,这样,若是刷卡的数据,需要解密,若是直接键盘输入,不需要这步操作。肯请有相关经验的高人指点一下,谢谢先!

解决方案 »

  1.   

    支持楼上,还有一种方法是给键盘输入和刷卡两个不同的textBox
      

  2.   

    还有一种方法是一个textBox,然后用空格切换两种形态,外观上可以颜色变化。
    总之怎么用看想象力了。
      

  3.   

    是这样的,写卡器可读可写,从的是COM2口,当然有读数据事件;读卡器没有写卡功能,占用的是鼠标PS/2口,即读卡器硬件模拟键盘输入,既然都是用的鼠标口,输入信息时,触发的是同样的事件,此时,怎么样才能区分当前有焦点的TextBox接受的信息是来自键盘直接输入的还是读卡器的呢?用两个TextBox不行,这样的用户体验很不好我的目的是:
    1)若直接键盘输入,失去焦点或按下回车键在Grid中查找定位行
    2)若从读卡器获取信息,首先读出来的是加密的字符,就在一瞬间,将读出的字符解密,即用户看到的是解密后的字符,解密后的字符还是在同一个TextBox中,然后查找Grid定位行问题:
    在Grid中定位行是从TextBox中取出关键字,若是2)操作,TextBox其实接受了两次不同的信息[加密字符和解密后的字符],但是用户体验的是后一种,即我必须找出一种方法,判断当前是从读卡器获取信息并迅速刷新TextBox显示解密后的字符目前,没有找到此判断方法,故求教不知道罗嗦了半天,说清楚了没
      

  4.   

    你拦截消息不就行了,没你想的什么瞬间,因为你拦截键盘消息,想不让TextBox显示任何东西都行。
      

  5.   

    PS:在Grid中定位行的条件不止编号一个,还有例如姓名,地址之类的。现实情况是:
    在Form上面有三个TextBox,一个对应编号,一个对应地址,一个对应姓名
          下面是Grid
    通过上面的条件快速定位行现在:编号可以手工从键盘输入也可以从读卡器读取,地址和姓名只能从键盘手工输入若是拦截键盘消息,姓名地址之类的怎么办?PS2:磁卡信息只能存储阿拉伯数字,不能使非数字字符,故在加密信息前加特定的标识位XXX等好像行不通
      

  6.   

    我自己的想法是(从读卡器读取信息):分两步走,1.读取磁卡信息并显示在有焦点的TextBox中,2.解密,解密后字符显示在同一个TextBox中,我只想让用户看到最终的结果,第一步应该是在后台瞬间完成的不知道这样的想法对不对