• 更人性化地控制用户输入(1 of n)


    通过设置限制"全角"输入。

    几年前,我在net 1.0上做一个项目,交付之后客户总是说模糊搜索出来的数据不准确。翻看代码,没问题!看看日志,也没问题!运行测试,没报错。最后只好跑到客户那里看个究竟,一天输入的数千份单据中如果按目的地去查是总数是10,如果按照操作员(一个目的地由只由一个操作员录入)去查,总数却是35,实际上应该是35。天啊是什么回事?查了下数据库,原来是中文输入法惹的祸。目的地的正确地址是"H.K. AirPort",数据库却出现了大量的"H。K。AirPort"。由于那时经验不足,这个问题通过编程序去解决的,自动将字符串里的标点符号去掉或换成半角符号。代码写了一大段,效率却很差,很不爽。没过几天,我在MSDN上得到了这个解决方法

    现在我向大家推荐这个方法:设置Control的属性ImeMode,指定这个值可以控制输入法编辑器 (IME) 的状态。

    例如,在一个窗体里,有两个TextBox,第一个TextBox(name="cnTextBox",TabIndex=0)输入的要求输入中文名,第二个TextBox(name="enTextBox" ,TabIndex=1)要求输入英文。按照用户的习惯,输入完cnTextBox,焦点就切换到 enTextBox,如果用户不切换输入法状态,就很有可能在enTextBox输入的是全角字符;而且用户频繁切换输入法就不能满足快速录入的要求。

    那么,我们可以这样设定属性:

    cnTextBox. ImeMode= ImeMode. On;
    enTextBox. ImeMode= ImeMode .Disable;

    测试一下,无论输入法是什么状态,只要焦点到enTextBox,输入法都会停止工作;焦点离开enTextBox,输入法的又恢复到切入前的状态了。

    ImeMode还有多个取值,各有不同的用处(引用MSDN):

    public enum ImeMode
    {
        Inherit,           //继承父控件的 IME 模式。
        NoControl,      //无(默认)。
        On,                // IME 已打开。此值指示 IME 已打开,可以输入中文或日语特定的字符。此值仅对日语、简体中文和繁体中文 IME 有效。
        Off,                // IME 已关闭。此模式指示 IME 已关闭,这意味着该对象的行为方式与英语输入模式相同。此值仅对日语、简体中文和繁体中文 IME 有效。
        Disable,          // IME 被禁用。如果使用此值,则用户无法从键盘打开 IME,而且 IME 浮动窗口处于隐藏状态。
        Hiragana,        // 平假名 DBC。此值仅对日语 IME 有效。
        Katakana,       // 片假名 DBC。此值仅对日语 IME 有效。
        KatakanaHalf,  // 片假名 SBC。此值仅对日语 IME 有效。
        AlphaFull,        // 字母数字双字节字符。此值仅对朝鲜语和日语 IME 有效。
        Alpha,            // 字母数字单字节字符 (SBC)。此值仅对朝鲜语和日语 IME 有效。
        HangulFull,      // 朝鲜文 DBC。此值仅对朝鲜语 IME 有效。
        Hangul,          // 朝鲜文 SBC。此值仅对朝鲜语 IME 有效。
        Close,
        OnHalf
    }

  • 相关阅读:
    能力修炼:底层、体系化与开放性闭环能力
    实现可扩展代码的四步曲
    碎碎念五六
    代码可扩展示例:元素构建
    碎碎念五七
    如何做编程知识投资及减少知识失效的影响
    如何写一份好的吸引人的简历
    构造与使用分离:命中内容高亮及合并的展示问题解决实现
    自助对公回单机的部分问题解决方法
    lodop一种导致自定义纸张无效现象的错误写法
  • 原文地址:https://www.cnblogs.com/cgzwwy/p/1282402.html
Copyright © 2020-2023  润新知