有难度:固定输入法

game_over 2005-08-29 08:07:58
就是说,当焦点移到一个文本框的时候,将其输入法固定至一种特定的输入法,比如:英文全角。

而且如果输入法被强制转换成别的,那就不允许输入。

小弟搞了两天没搞定,高手们,帮帮忙啊!!!
...全文
277 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
TT008 2006-05-27
  • 打赏
  • 举报
回复
Study
TechEye 2005-09-13
  • 打赏
  • 举报
回复
在控件里的 ImeModeChanged 事件里写,一改变,又把输入法改为你想要的就可以了!
game_over 2005-09-01
  • 打赏
  • 举报
回复
weisunding(鼎鼎),多谢指教。

程序小弟是看不懂了,只是好像没起什么作用,输入法还是可以变的,而且变了之后还是可以输入的,好像只是在初始化的时候才起了作用,以后手动改输入法这个程序就不好使了。

呵呵,本来在项目中没有想到会这么有难度的东西,竟然好几天都没搞出来,各位,多多指教。
tslkfyh 2005-08-31
  • 打赏
  • 举报
回复
UP
game_over 2005-08-31
  • 打赏
  • 举报
回复
ImeMode不行,还可以切换输入法。如果输入法换了,ImeMode就不起作用了。(ImeMode只对特定的输入法有效)
TechEye 2005-08-31
  • 打赏
  • 举报
回复
game over now,enjoy it! :)
TechEye 2005-08-31
  • 打赏
  • 举报
回复
我刚用API写了个,以下是输入法代码,更多的楼主请查询一下注册表

HKEY_USERS\.DEFAULT\keyboard layout\preload

/*
00000804 - 英文输入
E00E0804 - 微软拼音2003
...
*/

ActivateIME("E0010804");//激活 "微软拼音2003 " 输入法



//我写的代码,直接可用

const int KLF_ACTIVATE = 0x001;
const int KLF_SETFORPROCESS = 0x100;

[DllImport("user32")]
public static extern int LoadKeyboardLayout(string pwszKLID, int flags);

[DllImport("user32")]
public static extern int ActivateKeyboardLayout(int HKL, int flags);

public static void ActivateIME(string imeCode)
{
int hkl = LoadKeyboardLayout(imeCode, KLF_ACTIVATE);
ActivateKeyboardLayout(hkl, KLF_SETFORPROCESS);
}
Leeshell 2005-08-30
  • 打赏
  • 举报
回复
关注
jinjazz 2005-08-30
  • 打赏
  • 举报
回复
this.textBox1.ImeMode=System.Windows.Forms.ImeMode.Disable;
jinbingg 2005-08-30
  • 打赏
  • 举报
回复
UP
zhgroup 2005-08-30
  • 打赏
  • 举报
回复
查查API吧。
commandown 2005-08-29
  • 打赏
  • 举报
回复
打开操作系统的 "高级文字服务" 功能,做相关的高级文字服务API调用即可~

请查阅 高级文字服务
ybzsu 2005-08-29
  • 打赏
  • 举报
回复
ImeMode=.........
ImeModeChanged()

game_over 2005-08-29
  • 打赏
  • 举报
回复
高手们,帮帮忙啊。小弟很急啊!!!
lionelwy 2005-08-29
  • 打赏
  • 举报
回复
up

110,536

社区成员

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

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

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