积极答复者
在一个TextBox中通过KeyEventArgs获取Table键的KeyValue总是得不到值啊!e.Handled=true已设置

问题
-
在KeyDown,KeyUp,KeyPress事件中 均设置了e.Handled=true;
但就是捕捉不到 值 ,一按键就Table走了
别直接告诉我他的KeyValue 关键不是这个KeyValue 而是这件事的解决方案,让我按Table键后 光标不移开 而且让我获取到了KeyValue
假设 这个TextBox1旁边还有一个TextBox2,来接收KeyValue
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
textBox2.Text = e.KeyValue.ToString("X");
}- 已移动 Sheng Jiang 蒋晟Moderator 2009年5月25日 15:41 Windows窗体类库问题 ([Loc]From:Visual C#)
答案
-
想在某个控件里让Tab键触发KeyDown事件,可以自定义控件,重写IsInputKey 方法
using System; using System.Windows.Forms; public class MyTextBox :System.Windows.Forms.TextBox { // Override IsInputKey method to identify the Special keys protected override bool IsInputKey( System.Windows.Forms.Keys keyData ) { switch ( keyData) { // Add the list of special keys that you want to handle case Keys.Tab: return true; default: return base.IsInputKey(keyData); } } }
周雪峰- 已标记为答案 胖胖亮 2009年5月25日 14:39
全部回复
-
你好,你可以试试下面的方法1
// Override From 的 ProcessCmdKey方法。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Tab) { MessageBox.Show("抓住Tab"); return true; } return base.ProcessCmdKey(ref msg, keyData); }
2 利用控件的 Leave 事件(焦点失去事件)
知识改变命运,奋斗成就人生! -
想在某个控件里让Tab键触发KeyDown事件,可以自定义控件,重写IsInputKey 方法
using System; using System.Windows.Forms; public class MyTextBox :System.Windows.Forms.TextBox { // Override IsInputKey method to identify the Special keys protected override bool IsInputKey( System.Windows.Forms.Keys keyData ) { switch ( keyData) { // Add the list of special keys that you want to handle case Keys.Tab: return true; default: return base.IsInputKey(keyData); } } }
周雪峰- 已标记为答案 胖胖亮 2009年5月25日 14:39
-