关于GcTextbox控件的IMEMode设定
在OCX版的Inputman7.0中,如果设置imText控件的ImeMode为平假名(ひらがな),那么无论在该控件中怎么切换输入法,控件再次获得光标时imemode都会变为平假名。
而在GcTextBox控件中,如果从平假名切换为半角英数,光标离开后再回到该控件上,imemode仍然为半角英数。
有没有什么办法能让GcTextBox不记忆前回到输入法,而是每次获得光标时都变为初期指定的输入法?
注:在GcTextBox控件的GotFocus事件中设定为固定的ImeMode应该可以,但是由于窗体上控件太多,不想每个控件都加一个事件。 回复 1楼ghostlyt的帖子
非常感谢您的反馈。
从您的描述来看,您的用法已经属于比较正确的用法。 回复 1楼ghostlyt的帖子
首先你说描述的GcTextBox的行为,是.net平台下,标准控件的行为。也就是说,当控件具有输入焦点,用户又切换了一下IME,这时,在丢失焦点的时候,控件本身就记录了此时用户选择的设置,在下一次获取焦点的时候,就会按照最后一次用户的选择设置ImeMode。
你通过GotFocus事件去将GcTextBox的ImeMode设置为固定的首选ImeMode是一个比较正确的解决办法。
如果一个一个的挂事件确实比较麻烦,你可以试试这么干。
首先初始化一个所有GcTextBox控件默认ImeMode的Dictionary,这一点可以通过遍历整个窗体的控件,在窗体正式显示之前获取到正确的默认设置
然后可以通过遍历的方式挂上全部GcTextBox实例的GotFocus方法,在方法体中只用做一件事情,查表,设置ImeMode
你看这样是否能够简化你的工作。 感谢版主的回答。
如果通过继承GcTextBox进行额外的封装来解决这个问题,有没有比较合适的办法?
想在一个合适的时点记住所设定的初始ImeMode,然后在GotFocus事件中将记录的初始值设回去。 回复 4楼ghostlyt的帖子
不过好像没有合适的时机去记录这个初始的ImeMode,除非你设置一个其他的属性,记住一个永远 不变的ImeMode,然后你使用这个新属性设置默认ImeMode。 回复 4楼ghostlyt的帖子
你好,你这个问题我遇到过,你只要用OS 标准的日文输入法就可以
如果有这种输入法请清空掉Microsoft Office IME 2010、Microsoft Office IME 2007
另外你可以参照如下网址的设定方法,最简单的就是不改动,让客户使用标准的输入法
这个不光是InputMan,.net的标准控件也有这个问题。
网址:https://support.microsoft.com/ja-jp/kb/945146
希望可以帮到你 楼上给的帖子和这位同学碰到的问题不是一码事,即便是标准的输入法,在标准的TextBox上,也会碰到这个问题,这属于.NET控件的设计,而不是bug。没有规避策的。只能写代码处理。 回复 6楼rbgongming的帖子
版主说的对,咱们所遇到的不是同一个问题。
另外,按照版主说的,添加一个额外的属性倒是个不错的办法。
我试试重载ImeModeBase,当设定ImeMode时,将设定值保存到添加的属性里,或许能解决这个问题。 回复 8楼ghostlyt的帖子
谢谢@Leo版主和@rbgongming的热心回帖。
如果楼主依然有什么问题欢迎给我们反馈。 回复 9楼Alice的帖子
OK了,
按8楼的思路,此问题已解决。
感谢各位的关注。
页:
[1]
2