zoukankan      html  css  js  c++  java
  • .NET的Windows应用程序对中文输入法支持的问题 【转载】

    以下内容转载自:http://blog.csdn.net/netcoder/archive/2009/02/18/3907472.aspx

    这不是一个新问题了,网上也不乏这方面的讨论,写出来也是为了理清自己的思路,难保以后不会碰到类似的问题。

    主要有两种表现:

    1、首次切换输入法失败的问题
    具体表现如下:
    比如有一个Form1上有一个TextBox1,两者的ImeMode属性都为NoControl。
    运行程序,弹出Form1,光标停留在TextBox1中,此时按下Ctrl+Shift或者Ctrl+Space打开输入法,会发现输入法状态条是灰的,必须用鼠标点击一下输入法状态条或者再次按下Ctrl+Shift或者Ctrol+Space才能正常激活输入法输入中文.

    2、输入法打开时自动切换成全角状态的问题
    具体表现如下:
    比如有一个Form1上有一个TextBox1和TextBox2,三者的ImeMode属性都为On。
    运行程序,弹出Form1,光标停留在TextBox1中,因TextBox1的ImeMode属性为On,不会出现上述的问题(1)了,但输入法调出来的时候就是全角状态,手工切换会半角,输入几个文字,再把光标移动到TextBox2中,又变成了全角了。。。

    幸运的是,对于每一个TextBox控件(不仅仅TextBox),问题(1)和(2)都只会出现一次。如果重新打开窗体,还会再次出现,很明显是.NET程序上的逻辑错误,没有处理好“第一次”的问题。
    补充一点:根据网上的讨论,上述问题是否会出现还和用户具体使用的输入法有关系,极端情况是无论怎么折腾都输不进汉字。

    问题的根结不在VS2005,而是在.NET Framework 2.0,微软已经为此问题提供了补丁,但根据反馈表明,问题依然存在,网上也有人提出了一些间接的解决办法,但效果差强人意。

    相对简单的处理办法:

    (1)对于可能会输入中文的控件,一律ImeMode属性为On

    (2)对于不可以输入中文的控件(电话,QQ号等),一律ImeMode属性为Disable

  • 相关阅读:
    CSS 兼容性调试技巧
    CSS 常用的兼容性调试技巧
    全局CSS设置
    CSS 盒子模型
    CSS表格属性
    HTML引入CSS的方法
    CSS 定位
    CSS display overflow 属性 cursor光标类型
    CSS 继承和优先级
    沟通表达
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1409763.html
Copyright © 2011-2022 走看看