WinForm 输入法小问题

xuld 2010-04-17 11:33:24
窗口失去焦点后重新获得焦点时回到默认输入法,怎么解决。




问题产生:



0.默认输入法是搜狗中文。就是随便打开一个窗口就是搜狗并且是中文状态。

1.新建windows应用程序(.net 2)

2.添加一个文本框,然后运行

3.在文本框内打字,并按shift将搜狗输入法切换到英文模式。

4.转换到其它窗口,然后再回来到这个窗口。

5.输入法又回到默认的中文。刚才的切换英文模式无效。



求解。
...全文
371 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
cecilia2006 2010-04-19
  • 打赏
  • 举报
回复
楼主看看这帖子 http://www.cnblogs.com/ami/archive/2007/06/30/801256.html
qiqishardgel 2010-04-19
  • 打赏
  • 举报
回复
没遇到过,帮顶!
xiaod1986 2010-04-18
  • 打赏
  • 举报
回复
有点深度!
superzxf 2010-04-18
  • 打赏
  • 举报
回复
安装.net2.0sp2
andybang1981 2010-04-18
  • 打赏
  • 举报
回复
不太注意,去玩玩看
古今多少事 2010-04-18
  • 打赏
  • 举报
回复
搜下这两个API的用法:
GetKeyboardLayoutList
ActivateKeyboardLayout
星云一点 2010-04-18
  • 打赏
  • 举报
回复
貌似难以解决 最好不要设中文转入法为默认输入法吧
June1991 2010-04-18
  • 打赏
  • 举报
回复
学习学习~
abcdef406505181 2010-04-18
  • 打赏
  • 举报
回复
友情帮顶
wuyq11 2010-04-18
  • 打赏
  • 举报
回复
设置ImeMode属性
使用微软拼音输入法,看看微软的补丁程序
http://topic.csdn.net/u/20090220/11/af84ea7a-0cf0-455e-8c9d-bce4f7b47a31.html
灵雨飘零 2010-04-18
  • 打赏
  • 举报
回复
友情帮顶!!
bingtao001 2010-04-18
  • 打赏
  • 举报
回复
看过!!!
KnowKjava 2010-04-18
  • 打赏
  • 举报
回复
不会。友情帮顶
zdl110110 2010-04-18
  • 打赏
  • 举报
回复

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 IME 已关闭。此设置仅对中文 IME 有效。
OnHalf HalfShape 上的 IME。此设置仅对中文 IME 有效。

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

public class Form1 : System.Windows.Forms.Form
{
RichTextBox rtb = new RichTextBox();
public Form1()
{
this.Controls.Add(rtb);
rtb.Dock = DockStyle.Fill;
this.InputLanguageChanged += new InputLanguageChangedEventHandler(languageChange);
}
private void languageChange(Object sender, InputLanguageChangedEventArgs e)
{
// If the input language is Japanese.
// set the initial IMEMode to Katakana.
if (e.InputLanguage.Culture.TwoLetterISOLanguageName.Equals("ja"))
{
rtb.ImeMode = System.Windows.Forms.ImeMode.Katakana;
}
}
public static void Main(string[] args)
{
Application.Run(new Form1());
}
}
参考一下MSDN,修改一下imemode为on,onhalf等试一下看能不能实现
whowhen21 2010-04-18
  • 打赏
  • 举报
回复
这个问题不常见啊,LZ竟然碰上了...
xuld 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wuyq11 的回复:]
设置ImeMode属性
使用微软拼音输入法,看看微软的补丁程序
http://topic.csdn.net/u/20090220/11/af84ea7a-0cf0-455e-8c9d-bce4f7b47a31.html
[/Quote]


不是半全角
xinxin1982 2010-04-18
  • 打赏
  • 举报
回复
想办法获取一开始进入时候的输入法状态,存在变量中..

然后获得焦点时间,更改状态就好..

貌似第一步麻烦点...不清楚怎么获取..不过可以google...
HELLOWORDC 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 xuld222 的回复:]
......
3.在文本框内打字,并按shift将搜狗输入法切换到英文模式。

4.转换到其它窗口,然后再回来到这个窗口。

5.输入法又回到默认的中文。刚才的切换英文模式无效。
[/Quote]

这个跟输入法有关系吧,我也用的是搜狗,只要重新进入文本框,搜狗就自动打开(貌视这种功能好象是输入法的一个智能功能)。应该是在搜狗输入法把这个开关项关上看怎么样?如果没有这个开关那就没有办法了。
zhu_chuan_hang 2010-04-18
  • 打赏
  • 举报
回复
这个真没遇到过
sean_zhou 2010-04-18
  • 打赏
  • 举报
回复
没遇过。mark
加载更多回复(1)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧