狂晕啊!VS2005开发winform项目输入法"全角"、"半角"问题......进来有分.........

wxm3630478 2009-02-18 12:09:59
本人给某公司开发了一个小管理系统(C/s)版

用VS2005开发 MDI窗体

昨天给客户装上测试,晕了,他们只要向TextBox中输入字符,输入法就变成全角的了,我在开发的时候没有碰到这个问题....

全角输入:123456789
半角输入:123456789

虽然可以Shift+(空格)可以切换,但是客户体验度很差,这样用很烦人

以前从来没有碰到过全角,半角的问题,所以开发的时候没考虑到这一点,本人暂时还是菜鸟一只,希望有高手帮我解决下.......

到网上搜索了半天....有解决方法,但是他们好象说对MDI开发的有问题,不幸的是我正是用MDI模式开发的...

我的机器上没有出现自动切换成全角的问题(开发和安装以后都没问题,到客户那里就出鬼了),也不知道怎么去测试,修改

...全文
2210 70 打赏 收藏 转发到动态 举报
写回复
用AI写文章
70 条回复
切换为时间正序
请发表友善的回复…
发表回复
yasaka 2011-11-24
  • 打赏
  • 举报
回复
补丁没用,本人亲测n次!要自己写很多代码,而且会影响用户习惯,
最好的办法是直接升级VS 2008!
不过VC++ 2005的MFC部分,没这个bug。
ljl55544840 2010-07-26
  • 打赏
  • 举报
回复
现在好好办法了,你用Framework3.5试试还出不出全角了
ljl55544840 2010-07-23
  • 打赏
  • 举报
回复
我也遇到同样的问题,程序中在一个文本框中写汉字后,换到下一个文本框中又变为全角的了
yirantaoqi_jun 2010-07-05
  • 打赏
  • 举报
回复
咋办了,这个问题,说法各一,但还是不知道选择哪一种解决方案
CNCaiNiao 2010-04-25
  • 打赏
  • 举报
回复
装不了
molihuacha1 2010-04-19
  • 打赏
  • 举报
回复
顶 ,全角补丁装不上,不知道怎么回事。
zwamm 2010-03-31
  • 打赏
  • 举报
回复
有用!
那个谁 2009-12-14
  • 打赏
  • 举报
回复
我也遇到了啊。。。急怎么解决啊。。。。,
rao3281 2009-04-03
  • 打赏
  • 举报
回复
这个问题是普遍性的问题吗?我也遇到了 下个补丁试试先吧
xy80235 2009-03-17
  • 打赏
  • 举报
回复
偶也遇到了這樣的問題
fqflylei 2009-02-23
  • 打赏
  • 举报
回复
在我的电话上测试了上面两个方法,一个是打补丁,一个是写下面的代码,,但这两个方法都不行,哪位大哥还有好的解决办法,贴一下,
[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;
//重载Form的OnActivated
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); //转换成半角
}


}
}

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); //转换成半角
}


}
}
sjf_kk 2009-02-19
  • 打赏
  • 举报
回复
学习下,还没遇到呢!
Aimer_Luki 2009-02-19
  • 打赏
  • 举报
回复
帮顶
  • 打赏
  • 举报
回复
TextBox.ImeMode属性
就可以解决这个问题
jietuan 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 49 楼 abcyzq 的回复:]
引用 5 楼 HDNGO 的回复:
http://files.cnblogs.com/zyh-nhy/vs2005输入法补丁.rar

貌似就是这个补丁~


大哥,我安装你给的补丁,咋安装不了呢,提示Windows Installer 服务不能安装此升级修补程序,因为找不到升级的程序或.......
[/Quote]

你download window installer 3.0
abcyzq 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 50 楼 lovehongyun 的回复:]
把那个补丁打上试一下
[/Quote]

那个补丁安装不了。
lovehongyun 2009-02-19
  • 打赏
  • 举报
回复
把那个补丁打上试一下
abcyzq 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 HDNGO 的回复:]
http://files.cnblogs.com/zyh-nhy/vs2005输入法补丁.rar

貌似就是这个补丁~
[/Quote]

大哥,我安装你给的补丁,咋安装不了呢,提示Windows Installer 服务不能安装此升级修补程序,因为找不到升级的程序或.......
  • 打赏
  • 举报
回复
我和楼主一样的问题 说说我做的尝试吧
1.打微软补丁 无效 基本上这个补丁打了和没打一样
2.设置ImeMode 部分情况下有用 但不能保证全部游泳 而且每个控件都要设置 太麻烦
hangang7403 2009-02-19
  • 打赏
  • 举报
回复
up
加载更多回复(48)

110,545

社区成员

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

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

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