一个热键被屏蔽的应用系统,客户不能通过热键切换输入法,现在希望能实现点击界面某个按钮时输入法自动切换到“智能ABC输入法”状态,再点击按钮能退出“智能ABC输入法”状态,请问怎样实现?

解决方案 »

  1.   

    TextBox.ImeMode属性。
    可以设置输入法。
      

  2.   

    那也很简单,通过两个按钮来实现ImeMode的切换。
      

  3.   

    mapserver(杨东 http://mapserver.cnblogs.com) 支持
    楼主不妨试试
    加个按钮来回切换就是,同时加判断
      

  4.   

    MSDN里没有搜到TextBox.ImeMode,不会具体去用
      

  5.   

    我试了半天,怎么发现只有日语输入法呢?shit
    ----------------------------------------------------
    [MSDN]
    Control.ImeMode 属性  
    获取或设置控件的输入法编辑器 (IME) 模式。 命名空间:System.Windows.Forms
    程序集:System.Windows.Forms(在 system.windows.forms.dll 中)语法Visual Basic(声明)<LocalizableAttribute(True)> _
    Public Property ImeMode As ImeModeVisual Basic(用法)Dim instance As Control
    Dim value As ImeModevalue = instance.ImeModeinstance.ImeMode = valueC#[LocalizableAttribute(true)] 
    public ImeMode ImeMode { get; set; }
    C++[LocalizableAttribute(true)] 
    public:
    property ImeMode ImeMode {
        ImeMode get ();
        void set (ImeMode value);
    }J#/** @property */
    public ImeMode get_ImeMode ()/** @property */
    public void set_ImeMode (ImeMode value)JScriptpublic function get ImeMode () : ImeModepublic function set ImeMode (value : ImeMode)属性值
    ImeMode 值之一。默认为 Inherit。 
    异常异常类型 条件 
    InvalidEnumArgumentException
     所分配的值不是一个 ImeMode 枚举值。 
     备注IME 是一个程序,它使用户能够通过使用标准键盘输入复杂字符和符号,如日语汉字字符。对于仅用于输入数值的 TextBox 控件,ImeMode 属性通常设置为 ImeMode.Off。对于 Form 类,ImeMode 属性值设置为 ImeMode.NoControl。不直接支持输入方法编辑器或允许从 IME 直接输入的大多数类将此属性的值设置为 NoControl。重要事项: 
    除非 ImeMode 已经以编程方式设置为 ImeMode.Disable,否则用户能够以交互方式更改它。在前一种情况下,用户将无法使用 IME。
     平台Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。版本信息.NET Framework
    受以下版本支持:2.0、1.1、1.0
      

  6.   

    我在社区里看到类似的问题,有这样一段代码:
         namhyuk(namhyuk) ( ) 信誉:100  2006-6-18 16:57:51  得分: 1  
     
     
       
    private void button1_Click(object sender, EventArgs e)
    {
                InputLanguage il = GetDesiredInputLanguage("逍遥笔 4.0 版");
                if (il == null)
                {
                    InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage;
                    MessageBox.Show("未能找到");
                }
                textBox1.Select();
                InputLanguage.CurrentInputLanguage = il;
                
    }
    public static InputLanguage GetDesiredInputLanguage(string layoutName)
    {
                InputLanguageCollection ilc = InputLanguage.InstalledInputLanguages;            foreach (InputLanguage il in ilc)
                {
                    if (il.LayoutName == layoutName)
                        return il;
                }
                return null;
    }  
     
      

  7.   

    试了 InputLanguage il = GetDesiredInputLanguage("逍遥笔 4.0 版");中的逍遥笔 4.0 版改成"中文(简体)-智能ABC"就是会提示"未能找到";大家知不知道if (il.LayoutName == layoutName)   这句中的字符串是怎么比较的,就算il.LayoutName与"中文(简体)-智能ABC"的值看起来一样怎么还是不执行下面的这一句: return il;
      

  8.   

    InputLanguage il = GetDesiredInputLanguage("智能 ABC");
    if (il == null)
    {
        InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage;
        MessageBox.Show("未能找到");
    }
    textBox1.Focus();
    InputLanguage.CurrentInputLanguage = il;
    ....
    public static InputLanguage GetDesiredInputLanguage(string layoutName)
    {
        InputLanguageCollection ilc = InputLanguage.InstalledInputLanguages;    foreach (InputLanguage il in ilc)
        {
            if (il.LayoutName.IndexOf(layoutName) != -1)
                return il;
        }
        return null;
    }
      

  9.   

    注意
     InputLanguage il = GetDesiredInputLanguage("逍遥笔 4.0 版");
    这一句的输入法名字要和系统的一致!
      

  10.   

    注意
     InputLanguage il = GetDesiredInputLanguage("逍遥笔 4.0 版");
    这一句的输入法名字要和系统的一致!
      

  11.   

    看看输入方法的属性,注意智能ABC的名称,一个空格不能差InputLanguage il = GetDesiredInputLanguage("中文 (简体) - 智能 ABC"); 这样就对了
      

  12.   

    foreach (InputLanguage il in InputLanguage.InstalledInputLanguages)
                {
                    txtDisplyContent.Text += il.Culture.EnglishName + '\n';
                }
                InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[1];