如何在textBox里面捕获键盘输入,包括组合键。

嵌入式乌托邦 2020-12-10 09:19:30
刚刚学习C#,想捕获键盘输入,在组合键这里卡住了。按了ctrl+a,结果显示的是ctrl+A,后面字母都是大写的。按单个按键吧,显示的又是一个大写一个小写。用了KeyDown事件总是不是预想的。
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
keystr = "";
if (e.Control)
{
if (!keystr.Contains("Ctrl+"))
keystr += "Ctrl+";
}

keystr += e.KeyCode.ToString();

//MessageBox.Show(keystr);
textBox.Text = keystr;
textBox.Select(textBox.Text.Length, 0);//光标定位到文本最后
textBox.ScrollToCaret();//滚动到光标处
}
...全文
2970 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
enaking 2020-12-11
  • 打赏
  • 举报
回复
2楼正解。。。。。。。。
八爻老骥 2020-12-11
  • 打赏
  • 举报
回复


private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
// Initialize the flag to false.
nonNumberEntered = false;

// Determine whether the keystroke is a number from the top of the keyboard.
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
// Determine whether the keystroke is a number from the keypad.
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
// Determine whether the keystroke is a backspace.
if(e.KeyCode != Keys.Back)
{
// A non-numerical keystroke was pressed.
// Set the flag to true and evaluate in KeyPress event.
nonNumberEntered = true;
}
}
}
//If shift key was pressed, it's not a number.
if (Control.ModifierKeys == Keys.Shift) {
nonNumberEntered = true;
}
}

八爻老骥 2020-12-11
  • 打赏
  • 举报
回复
用 Control.ModifierKeys 属性
desperaso 2020-12-11
  • 打赏
  • 举报
回复

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
e.Handled = false;
if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.A)
{
MessageBox.Show("Press Ctrl+A");
}
}

111,113

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧