现象就是,一个textbox 当是中文输入法的时候,比如搜狗,输入一个字母a,直接按回车,同时会触发textbox的回车事件。导致直接发送消息了。
原因就是中文输入法的回车事件 , 大多数输入法都是在keydown中完成输入过程。所以如果回车提交是在keyup事件中的话就会出现输完字后直接触发回车键提交,从而产生冲突问题。
解决办法就是:
把控件的回车事件改为KeyDown或者PreviewKeyDown中捕获,这时候当keydown事件发生的时候是在输入法上,而不会发生在提交框的发送事件上,进而解决了冲突。
RichTextBox同样适用。

本文介绍了一个关于在使用中文输入法时,输入一个字母后直接按回车键导致的消息发送冲突问题。该冲突源于多数中文输入法在keydown阶段完成输入过程,而消息提交通常在keyup事件中触发。解决方法是将回车事件处理从keyup改为keydown或PreviewKeyDown,以避免冲突。
1191





