我已经在我的表单和KeyDown
事件上采用了一个链接按钮,我按如下方式编写,将链接按钮向左移动
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
{
linkLabel1.Left = linkLabel1.Left + 5;
}
}
但是这并没有按照要求移动链接标签,有人可以告诉我哪里出错了
这也不起作用
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Left:
linkLabel1.Left = linkLabel1.Left + 5;
break;
default:
return;
}
}
答案 0 :(得分:2)
设置form1的 KeyPreview = true。 它有效。
答案 1 :(得分:0)
我认为它与linklabel拦截事件有关。如果表单上存在链接标签,则按键事件不会被提升到表单。
将KeyPreview设置为true(在表单上)可以解决此问题。然后你应该引发事件,尽管箭头键可能仍有问题。
更新
好的,这应该可行,添加:
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Left)
{
linkLabel1.Left = linkLabel1.Left + 5;
}
return base.ProcessDialogKey(keyData);
}
答案 2 :(得分:0)
如果要移动控件,则必须重新配置 Control.Location 属性。 所以只需在位置添加或删除一些点。[X / Y] .Property就是这样!
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
{
// have we space?
if(linkLabel1.Location.X >= 4)
// 5 dots to the left side
linkLabel1.Location = new Point(linkLabel1.Location.X - 5, linkLabel1.Location.Y);
}
}
编辑: msdn
位置是点,点有(x,y) - 坐标。
答案 3 :(得分:0)
protected override bool ProcessCmdKey(ref Message msg,Keys keyData) { if(e.KeyCode == Keys.Left) { linkLabel1.Left = linkLabel1.Left + 5; } return base.ProcessCmdKey(ref msg,keyData); }