private void PositionCursor(object sender, PaintEventArgs e)
{
Font arialBold = new Font("Arial", 14.0F);
if (trigger)
{
TextRenderer.DrawText(e.Graphics, ("X"), arialBold,
new Point(x * 20 - 4, y * 20 - 2), Color.Red);
trigger = false;
}
}
private void MoveCursor(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
y--;
break;
case Keys.Left:
x--;
break;
case Keys.Down:
x++;
break;
case Keys.Right:
y++;
break;
}
trigger = true;
}
您好,
我正试图通过x和y坐标在winforms应用程序中导航“X”。我还尝试使用ProcessCmdKey方法而不是KeyEventArgs的MoveCursor方法。在这两种情况下,切换操作都可以正常工作。如果我通过MessageBox显示x和y值,则值会正确更改。但是当按下一个键时我没有触发PaintEvent,我找不到我的思维错误。请帮我。 谢谢!
答案 0 :(得分:1)
在this post中共享时,您应该在MoveCursor末尾添加对表单的Invalidate方法的调用:
private void MoveCursor(object sender, KeyEventArgs e)
{
// ...
trigger = true;
this.Invalidate();
}
答案 1 :(得分:0)
当您在光标应更新的对象Invalidate
上调用((Control)sender).Invalidate()
时,它应在片刻后重新绘制。可能在MoveCursor
方法结束时。
然后你必须将PositionCursor
挂钩到Paint
Control
的事件(你可能已经做过)