Win32消息在C#中的使用

ime的bug导致本来屏蔽了输入法的也可以输入。这样,一个数字类型的控件也就输入了汉字等等,并且在textchanged里处理也不是很好,麻烦。所以我借助了win32的消息来处理ime的事件。
当输入法输入完成时会发送WM_IME_CHAR消息,我们可以通过捕捉它来控制输入的合法性。
protected void WinProc(ref Message m)
{
  int val = m.WParm.ToInt32();

  if(m.Msg == 0x286)//0x286为WM_IME_CHAR消息
  {
    Char a = Convert.ToChar(val
    if(val >= 0 && val <=255 )
    {
      //ok
    }
    else if(val>=65281 && val<=65374)
    {//全角拉丁字符的时候,转换为半角的拉丁字符
      val = 33+val-65281;
    }
    else
    {

     //其他汉字全部屏蔽掉
      return;
    }

    //具体处理
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值