C#的winform程序,文本框输入数字时要求只能接受半角的数字可是每次输入法到那总是会变成全角,然后进行半全角切换,很是麻烦,请问有没有什么好的方法或者哪里可以进行设置,可以让每次到输入框时输入法总是半角?

解决方案 »

  1.   

    顶上这位一下.
    ImeMode属性,你查一下资料.和全解半解没有关系.
      

  2.   

    参考:
    http://topic.csdn.net/u/20090218/12/1c2be55b-b894-4fc7-b99d-dd91f929dbc3.html建议下个输入法补丁安装一下:
    http://download.csdn.net/source/320345
      

  3.   

    Control.ImeMode 属性:获取或设置控件的输入法编辑器 (IME) 模式。 
    由于窗体属性继承关系,如果WINFORM窗体中大部分需要设置为输入法有效状态,可以设置为FORM的ImeMode属性为On.
    如果需要某些TextBox为输入法有效,则使用ImeMode.On
    如果需要设置整个窗体的输入法全部为半角
            [DllImport("imm32.dll")]
            public static extern IntPtr ImmGetContext(IntPtr hwnd);
            [DllImport("imm32.dll")]
            public static extern bool ImmGetOpenStatus(IntPtr himc);
            [DllImport("imm32.dll")]
            public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
            [DllImport("imm32.dll")]
            public static extern bool ImmGetConversionStatus(IntPtr himc, ref   int lpdw, ref   int lpdw2);
            [DllImport("imm32.dll")]
            public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
            private const int IME_CMODE_FULLSHAPE = 0x8;
            private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
            protected override void OnActivated(EventArgs e)
            {
                base.OnActivated(e);
                IntPtr HIme = ImmGetContext(this.Handle);     
                if (ImmGetOpenStatus(HIme)) 
                {
                    int iMode = 0;
                    int iSentence = 0; 
                    bool bSuccess = ImmGetConversionStatus(HIme, ref   iMode, ref   iSentence);     
                    if (bSuccess)
                    {                    if ((iMode & IME_CMODE_FULLSHAPE) > 0)        
                            ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE);        
                    }            }
            }