找回密码
 立即注册

QQ登录

只需一步,快速开始

ghostlyt

初级会员

18

主题

76

帖子

214

积分

初级会员

积分
214

活字格认证微信认证勋章

ghostlyt
初级会员   /  发表于:2015-10-28 20:08  /   查看:13907  /  回复:10
在OCX版的Inputman7.0中,如果设置imText控件的ImeMode为平假名(ひらがな),
那么无论在该控件中怎么切换输入法,控件再次获得光标时imemode都会变为平假名。
而在GcTextBox控件中,如果从平假名切换为半角英数,光标离开后再回到该控件上,imemode仍然为半角英数。
有没有什么办法能让GcTextBox不记忆前回到输入法,而是每次获得光标时都变为初期指定的输入法?

注:在GcTextBox控件的GotFocus事件中设定为固定的ImeMode应该可以,但是由于窗体上控件太多,不想每个控件都加一个事件。

10 个回复

正序浏览
Alice
社区贡献组   /  发表于:2015-10-30 10:01:00
11#
回复 10楼ghostlyt的帖子

好了,谢谢您的反馈。
您可以关注我们的微信服务号(微信号:GrapeCityDT),帖子有回复时可即时收到提醒,便于您第一时间查看,尽快解决技术问题。关注即可获得300金币用于兑换礼品。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
ghostlyt
初级会员   /  发表于:2015-10-29 18:05:00
10#
回复 9楼Alice的帖子

OK了,
按8楼的思路,此问题已解决。
感谢各位的关注。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-10-29 17:56:00
9#
回复 8楼ghostlyt的帖子

谢谢@Leo版主和@rbgongming的热心回帖。

如果楼主依然有什么问题欢迎给我们反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
ghostlyt
初级会员   /  发表于:2015-10-29 15:28:00
8#
回复 6楼rbgongming的帖子

版主说的对,咱们所遇到的不是同一个问题。

另外,按照版主说的,添加一个额外的属性倒是个不错的办法。
我试试重载ImeModeBase,当设定ImeMode时,将设定值保存到添加的属性里,或许能解决这个问题。
回复 使用道具 举报
Leo
超级版主   /  发表于:2015-10-29 15:04:00
7#
楼上给的帖子和这位同学碰到的问题不是一码事,即便是标准的输入法,在标准的TextBox上,也会碰到这个问题,这属于.NET控件的设计,而不是bug。没有规避策的。只能写代码处理。
回复 使用道具 举报
rbgongming
论坛元老   /  发表于:2015-10-29 14:19:00
6#
回复 4楼ghostlyt的帖子

你好,你这个问题我遇到过,你只要用OS 标准的日文输入法就可以
如果有这种输入法请清空掉Microsoft Office IME 2010、Microsoft Office IME 2007
另外你可以参照如下网址的设定方法,最简单的就是不改动,让客户使用标准的输入法
这个不光是InputMan,.net的标准控件也有这个问题。

网址:https://support.microsoft.com/ja-jp/kb/945146

希望可以帮到你
把简单的事做好就是不简单,
把平凡的事做好就是不平凡。
回复 使用道具 举报
Leo
超级版主   /  发表于:2015-10-29 13:18:00
5#
回复 4楼ghostlyt的帖子

不过好像没有合适的时机去记录这个初始的ImeMode,除非你设置一个其他的属性,记住一个永远 不变的ImeMode,然后你使用这个新属性设置默认ImeMode。
回复 使用道具 举报
ghostlyt
初级会员   /  发表于:2015-10-29 12:45:00
地板
感谢版主的回答。

如果通过继承GcTextBox进行额外的封装来解决这个问题,有没有比较合适的办法?
想在一个合适的时点记住所设定的初始ImeMode,然后在GotFocus事件中将记录的初始值设回去。
回复 使用道具 举报
Leo
超级版主   /  发表于:2015-10-29 11:58:00
板凳
回复 1楼ghostlyt的帖子

首先你说描述的GcTextBox的行为,是.net平台下,标准控件的行为。也就是说,当控件具有输入焦点,用户又切换了一下IME,这时,在丢失焦点的时候,控件本身就记录了此时用户选择的设置,在下一次获取焦点的时候,就会按照最后一次用户的选择设置ImeMode。
你通过GotFocus事件去将GcTextBox的ImeMode设置为固定的首选ImeMode是一个比较正确的解决办法。

如果一个一个的挂事件确实比较麻烦,你可以试试这么干。
首先初始化一个所有GcTextBox控件默认ImeMode的Dictionary,这一点可以通过遍历整个窗体的控件,在窗体正式显示之前获取到正确的默认设置

然后可以通过遍历的方式挂上全部GcTextBox实例的GotFocus方法,在方法体中只用做一件事情,查表,设置ImeMode

你看这样是否能够简化你的工作。

评分

参与人数 1金币 +999 收起 理由
Alice + 999 奖励金币

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部