输入法的问题,已经把我折腾的精疲力尽了。。终于在Win7平台上,中日韩三国输入法能够在WPF上正确使用之后,WinXP又不行了。。。韩文输入法无法正确使用。。。

好吧,只能做几个小程序,测试下韩文输入法在不同平台,不同框架(WinForm/WPF)下的区别:

1. 韩文在输入过程中,很奇特,会有一个高亮闪烁的小方块,这个表示,当前的韩文字符正在构造中,他会随着你之后的输入而变化,这个高亮的小方块,有什么奇特的呢?在WPF的TextBox里面,TextBox的SelectionLength属性,返回的是1(表示有一个字符被选中),而在WinForm下面,返回的是0(表示没有字符被选中)。这个在Win7/WinXP平台下,都是一致的。看截图:

Win7 WPF/WinForm (输入t,组出来的韩文应该是ㅅ,注意Selection Length和Selection Start):


WinXP WPF/WinForm: (XP下WinForm的小方块有点小。。。)

好,每个UI都有一个CheckBox,这个的意思就是程序每个10毫秒会自动调用txtBox.Select(txtBox.SelectionStart, 0);语句,这个有什么意义呢?这句语句相当于把Selection清除。我就想看看,在清除了Selection之后,韩文输入法能否正常工作。经测试,2个平台下WinForm都能正常工作,而WPF只有在Win7平台才能正常工作,在XP下,韩文输入法有2个大问题:一个是不能正常组字,二就是光标会跑到输入的字符前面。。。看截图:

Win7 WPF/WinForm (输入ty,组出来的韩文应该是쇼注意Auto Call已经开启,这时候Selection Length都变成了0),Win7下,仍然有个小方块,而且组出来的字是正确的。Winform把t和ty组出来的字都加到了TextBox里!

WinXP WPF/WinForm (注意Auto Call已经开启,这时候Selection Length都变成了0),WPF没有组字,直接把t和y变成了2个字符,而且第二个字符插在了第一个字符之前。WinForm和Win7平台一样:

总结:

附上代码:

Wpf:

using System;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Threading;namespace Wpf.ImeSelectionTracker
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();new DispatcherTimer(TimeSpan.FromSeconds(0.01), DispatcherPriority.Normal,(sender, e) => { UpdateImeState(); }, this.Dispatcher);}private void UpdateImeState(){lblSelectionStart.Content = "N/A";lblSelectionLength.Content = "N/A";lblSelectionString.Content = "N/A";try{IntPtr hwndTextBox = (HwndSource.FromVisual(this.txtBox) as HwndSource).Handle;lblSelectionStart.Content = txtBox.SelectionStart;lblSelectionLength.Content = txtBox.SelectionLength;lblSelectionString.Content = txtBox.Text.Substring(txtBox.SelectionStart, txtBox.SelectionLength);if(chkAutoSelection.IsChecked == true)txtBox.Select(txtBox.SelectionStart, 0);}catch { }}}
}

WinForm:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WinForm.ImeSelectionTracker
{public partial class Form1 : Form{public Form1(){InitializeComponent();Timer timer = new Timer();timer.Interval = 10;timer.Tick += (sender, e) => { UpdateImeState(); };timer.Start();}private void UpdateImeState(){lblSelectionStart.Text = "N/A";lblSelectionLength.Text = "N/A";lblSelectionString.Text = "N/A";try{IntPtr hwndTextBox = this.txtBox.Handle;lblSelectionStart.Text = txtBox.SelectionStart.ToString();lblSelectionLength.Text = txtBox.SelectionLength.ToString();lblSelectionString.Text = txtBox.Text.Substring(txtBox.SelectionStart, txtBox.SelectionLength);if (chkBox.Checked)txtBox.Select(txtBox.SelectionStart, 0);}catch { }}}
}

转载于:https://www.cnblogs.com/puncha/archive/2013/01/05/3876950.html

WPF与输入法冲突研究之三:韩文输入法在不同平台,WinForm/WPF下的区别相关推荐

  1. 精简XP系统添加韩文输入法,太难了

    今天,老板换电脑了,老板是朝鲜族人,要用韩文写报告.手中没有XP-SP3的安装盘,郁闷,找了几张GHOST盘都装了,结果发现韩文输入法都被精简了.无奈在网上找各种解决办法,下载补丁.结果还是叼不出来, ...

  2. 在windows xp下如何添加韩文输入法

    今天终于把韩文输入法加到系统中去了,现在我就把我的做法告诉大家, 好让大家不要为这个浪费时间了..话就不多说了..开始吧! 因为现在大多数的操作系统都是ghost做的精间版.所以把IME这个文件夹压缩 ...

  3. libhangul 韩文输入法库

    转载时请注明出处和作者联系方式:http://blog.csdn.net/mimepp 作者联系方式:YU TAO <yut616 at sohu dot com> 关键字: Korean ...

  4. 树莓派ibus输入法无法输入中韩文

    环境:树莓派4+raspbian 系统语言:韩文 问题:突然发现开机时ibus无法自动启动,切换输入法正常,但无法输入拼音,hangul. 解决方法: 网上试了n种方法,无法解决: 试了如下方法后解决 ...

  5. 搜狗输入法精简_韩语输入法软件哪个好?(手机版amp;电脑版)

    (一)手机韩语输入法: 可以下载安装搜狗输入法,GO国际输入法,百度输入法,谷歌韩文输入法,等. 还有什么好用的手机输入法,欢迎留言区评论哦~ (二)电脑韩语输入法: 韩语输入法是系统自带的,只需要调 ...

  6. 服务器维护中韩语怎么说,韩语输入法安装新问题

    2005-08-28 如何删处WINDOWS中的日文, 在"Windows\ime\"文件夹保存有输入法相关的文件,其中的繁体中文.日文.韩文输入法对我们大部分人都没有用,我们可将 ...

  7. wxpython 如何在windows下同时显示unicode中日韩文

    周海汉 /文 2010.1.6 python版本,python 2.6+,wxpython 2.8+ 问题提出 遇到wxpython 如何在windows下同时显示中文日文韩文越南拼音的问题. win ...

  8. 韩文T9宫格输入法的实现

    工作中有幸接触到了韩文显示和韩文输入法法,然而对于不懂韩文的我来说,要我写输入法真的是非常的困难,百度一点有用的资料都没有,翻墙去谷歌搜索也没有,最后可以提供了一个文档,这个文档是非常的有用的,他实现 ...

  9. win7系统文件夹无法显示韩文_解决显示方块□□□的问题

    自己是个韩语爱好者,因为需要系统安装了韩文输入法,但电脑间歇性地文件夹无法显示韩文,而是显示一堆的方块□□□,真是伤脑筋... 这里不讨论什么系统有没有安装韩文字体啊或者有没有在语言栏设置啊什么的问题 ...

  10. Raspbian上显示韩文并安装韩语输入法

    韩文显示 由于初始的Raspbian系统缺少韩文字体,文件名以及网页中的韩文显示成了乱码 sudo apt install fonts-unfonts-core 安装韩语输入法 Raspbian上常用 ...

最新文章

  1. l3fwd 是什么_服务器DPDK l3fwd性能测试
  2. java socket负载均衡_Java Socket分发服务负载均衡
  3. maven-source 1.3 中不支持注释请使用 -source 5 或更高版本以启用注释
  4. 热词统计发现算法3则
  5. mysql infile local,MySQL:启用LOAD DATA LOCAL INFILE
  6. mvc html传参数乱码,SpringMVC Controller 接收页面传递的中文参数出现乱码
  7. 大学生计算机社团该办什么活动,大学生社团活动策划方案
  8. Winform GDI+ 绘图
  9. 静态路由及默认路由实验配置
  10. 如何改变Delphi的快捷键 - DELPHI
  11. 凤凰机器人猜成语答案_看图猜成语:一只手上拿着绳子,旁边有个起吊机
  12. spring纯注解+libreoffice
  13. Windows10连接局域网打印机
  14. 什么是properties文件
  15. HIVE:Hive启动 beeline 客户端失败的解决方法
  16. 2020-10-15
  17. Unity3D笔记第十五天——Unity2D技术
  18. JavaScript基础小节——手写重点整理02
  19. .vm后缀的文件是什么?
  20. MySQL8免安装版安装教程

热门文章

  1. 网站运维都需要做什么工作
  2. FTP和SSH的区别
  3. 收集了一些容易出错的题,可能大家也不会注意到的基础知识(js)
  4. UIViewController的生命周期
  5. 数据分析 -- 流程
  6. git的简单使用(windows)
  7. TensorFlow函数(四)tf.trainable_variable() 和 tf.all_variable()
  8. Datatables+Bootstrap
  9. 记一次mysql故障恢复
  10. 有感于Oracle 9i的QueryHints