就是说,要求全角、半角字符的自动切换,选中表单上某个TextBox自动切换成汉字状态以便输入汉字,选中另一个TextBox又自动切换为英文输入状态可输入半角字符。

解决方案 »

  1.   

    TextBox.ImeMode = ImeMode.On;    //打开输入法
    TextBox.ImeMode = ImeMode.Off;    //关闭输入法
      

  2.   

    #region 全角半角转换
    /// <summary>
    /// 转全角的函数(SBC case)
    /// </summary>
    /// <param name="input">任意字符串</param>
    /// <returns>全角字符串</returns>
    ///<res>
    ///全角空格为12288,半角空格为32
    ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
    ///</res>
    public  static string ToSBC(string input)
    {
    //半角转全角:
    char[] c=input.ToCharArray();
    for (int i = 0; i < c.Length; i++)
    {
    if (c[i]==32)
    {
    c[i]=(char)12288;
    continue;
    }
    if (c[i]<127)
    c[i]=(char)(c[i]+65248);
    }
    return new string(c);
    }
    /// <summary> 转半角的函数(DBC case) </summary>
    /// <param name="input">任意字符串</param>
    /// <returns>半角字符串</returns>
    ///<res>
    ///全角空格为12288,半角空格为32
    ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
    ///</res>
    public static string ToDBC(string input)
    {
    char[] c=input.ToCharArray();
    for (int i = 0; i < c.Length; i++)
    {
    if (c[i]==12288)
    {
    c[i]= (char)32;
    continue;
    }
    if (c[i]>65280 && c[i]<65375)
    c[i]=(char)(c[i]-65248);
    }
    return new string(c);
    }
    #endregion
      

  3.   

    TextBox.ImeMode = ImeMode.On;    //打开输入法 
    TextBox.ImeMode = ImeMode.Off;    //关闭输入法
      

  4.   

    Winform中可以用InputLanguage类实现:        private void textBox1_Enter(object sender, EventArgs e)
            {
                InputLanguage il = InputLanguage.InstalledInputLanguages[0];
                InputLanguage.CurrentInputLanguage = il;
            }        private void textBox1_Leave(object sender, EventArgs e)
            {
                InputLanguage il = InputLanguage.InstalledInputLanguages[1];
                InputLanguage.CurrentInputLanguage = il;
            }
      

  5.   

    楼主要求:控制TextBox只能输入英文或数字,是一种事前控制方法。此时必须考虑三种情况:
    1)键盘常规输入,即事件KeyDown/KeyPress/KeyUp
    2)快捷键输入,即Ctrl+V
    3)鼠标上下文菜单输入,即 Pasete
    请参考拙文关于控制只输入数字的解决方案:定制C# TextBox中只允许输入数字的解决方法,稍做修改就可以控制只允许数字和字母的输入。
      

  6.   

    可以在textbox后麵添加个用户自定义控件,然后编写代码进行控制.
      

  7.   

    可以通过判断输入字符的ASCII码,来决定是否显示在textbox中protected override onKeyPress()
    {
      
    }
      

  8.   

    这个控件属性可以设置的,就是输入法控制 ImeMode.
      

  9.   

    TextBox.ImeMode = ImeMode.On;    //打开输入法 
    TextBox.ImeMode = ImeMode.Off;    //关闭输入法