private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 'a')
{
e.KeyChar = 'b';
}
}
在winodws winform中可以编译在智能终端mobile开发中提示:
无法对属性或索引器“System.Windows.Forms.KeyPressEventArgs.KeyChar”赋值 -- 它是只读的
e.KeyChar = 'b';
如何处理?

解决方案 »

  1.   

    把消息拦截住不再继续传递,然后在重新发送的新key的消息。
      

  2.   

    调用API  SetHookWindowsEx();
      

  3.   

    if (e.KeyChar == 'a')
    {
    e.KeyChar = 'b';
    }
    还可以这样的吗?
    我以为他一直都是只读的。。
      

  4.   

    一定要实现我是有方法,但难度不小,你不必费这个力气。
    大概思路为:
    1.控件子类化(但是这个操作要放在外面,不能自定义控件子类化自己,代码上,逻辑上都对的,但是.net mobile的开发工具不完善,所以你如果子类化自己,就会无法看到设计界面)
    2.如同上面说的,消息拦截,修改消息的WPARAM为WPARAM+1。这样可以。实现细节还是有很多技巧和难度的。给你建议,别这样弄了。
      

  5.   

    而且要拦截的消息不止一个,WM_KEYDOWN,WM_SETTEXT,WM_PASTE