有个问题想请教下,如何获取方向键的消息?及怎么处理的?
我想实现这样一个功能,当焦点在一个label上,按下方向右键就弹出另一个label;
我是个新手,大家帮忙讲详细点吧!
能给点例子和资料吗?
3Q
我想实现这样一个功能,当焦点在一个label上,按下方向右键就弹出另一个label;
我是个新手,大家帮忙讲详细点吧!
能给点例子和资料吗?
3Q
解决方案 »
- 【winform与Flash交互】调用AxShockwaveFlash对象的GetVariable方法会使FSCommand事件提前结束?
- siverlight中DateGrid控件如何保存修改后的数据?
- 比较特殊的添加xml节点怎么处理呢?
- sqlhelper.cs老是报下列错误:当前上下文中不存在名称“SystemError”
- 晕啊,为什么在类定义的变量无法定义值啊
- 为一个物流公司开发一个网上信息实时信息发布系统,没有思路,给个建议,作过类似系统请进
- GDI+的超级超级难题,翻遍论坛没完美解决方案
- datagridview请教
- c# struct结构体,如果在程序中定义了它有什么作用吗
- DataGrid如何根据列的值显示不同的字符串
- 大家讨论一下怎样给用户划分权限!
- DataTable
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;
}
}
{
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)
{ }
}
我的意思是当有一个方向右键的消息时(就是第一个label有一个右键事件),就画出一个label.
我不理解c#的消息机制是怎么实现的,就像C++中的WM_KEYDOWN
这样应该怎么写?
用MouseEventHandler却能接受到鼠标消息。
怎么解决呢?
下面是单击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);
}
}
鼠标事件能用,用键盘事件的话,控件无法接受消息!
这怎么解决啊?
this.label1.Focus();
这样能行吗?