C# 键盘消息

deyter 2008-12-06 11:50:21
有个问题想请教下,如何获取方向键的消息?及怎么处理的?
我想实现这样一个功能,当焦点在一个label上,按下方向右键就弹出另一个label;
我是个新手,大家帮忙讲详细点吧!
能给点例子和资料吗?
3Q
...全文
175 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
net5i 2008-12-07
  • 打赏
  • 举报
回复
回搂主9楼,label控件获得焦点以后,就能接受键盘消息,搂主可以试验一下我贴出的代码
net5i 2008-12-07
  • 打赏
  • 举报
回复
this.label1.Focus();是可以的,强制使label获得焦点,楼主可以试试
deyter 2008-12-07
  • 打赏
  • 举报
回复
很多人说LABEL控件不是不能设置焦点吗?
this.label1.Focus();
这样能行吗?
deyter 2008-12-07
  • 打赏
  • 举报
回复
To(net5i)
鼠标事件能用,用键盘事件的话,控件无法接受消息!
这怎么解决啊?
Fibona 2008-12-06
  • 打赏
  • 举报
回复
KeyDown是在字符显示到textbox之前调用,

KeyDown是在字符显示到textBox之后调用

private void txtkey_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
{

}
}
private void txtkey_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
{

}
}
Silver_1987 2008-12-06
  • 打赏
  • 举报
回复
学习了
长沙三毛 2008-12-06
  • 打赏
  • 举报
回复
Label不能有焦点,是TextBox吗?
        private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Right)
{
Label label = new Label();
label.Parent = this;
label.Location = new Point(300, 100);
label.Size = new Size(100,100);
label.Text = "OK";
e.SuppressKeyPress = true;
}
}
net5i 2008-12-06
  • 打赏
  • 举报
回复
label控件默认是接受不了焦点的,从而就触发不了键盘事件的。

如果搂主就想处理Label控件的键盘事件的话,那么就必须让他获得焦点。
下面是单击Label控件获得焦点后,通过PreviewKeyDown来处理键盘事件的方法:


private void label1_Click(object sender, EventArgs e)
{
this.label1.Focus(); //点击标签后,让标签强制获得焦点
}

private void label1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyData == Keys.Right) //如果是右方向键
{
//创建一个新的Label
Label newLabel = new Label();
newLabel.Text = "新的标签";
newLabel.SetBounds(10, 10, 80, 20);
this.Controls.Add(newLabel);
}
}
deyter 2008-12-06
  • 打赏
  • 举报
回复
我用了KeyEventHandler,怎么不能接受到键盘消息呢?
用MouseEventHandler却能接受到鼠标消息。
怎么解决呢?
deyter 2008-12-06
  • 打赏
  • 举报
回复
我说的不清楚,不好意思!
我的意思是当有一个方向右键的消息时(就是第一个label有一个右键事件),就画出一个label.
我不理解c#的消息机制是怎么实现的,就像C++中的WM_KEYDOWN
这样应该怎么写?
net5i 2008-12-06
  • 打赏
  • 举报
回复
噢?Label不能获取焦点的吧?

搂主需求再描述清楚些?
sumerainping 2008-12-06
  • 打赏
  • 举报
回复
我用的KeyUp事件

111,131

社区成员

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

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

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