我在 Canvas 元素内有许多控件,我希望能够使用箭头/方向键(上、下、左、右)在 Canvas 内移动它们。在 WPF/代码隐藏中执行此操作的最简单方法是什么?有没有一种惯用的 WPF 方法可以做到这一点?
我想我应该澄清一下:我希望能够独立移动每个控件;我不想同时移动所有控件。
这是我的解决方案:
一、捕获按键按下事件
EventManager.RegisterClassHandler(typeof(MainWindow), UIElement.KeyDownEvent, new KeyEventHandler(KeyDownHandler));
然后找出谁发送了事件并相应地移动它。
void KeyDownHandler(object sender, KeyEventArgs e)
{
UIElement element = e.OriginalSource as UIElement;
if (element != null)
{
double left = Canvas.GetLeft(element);
if (Double.IsNaN(left)) left = 0;
double top = Canvas.GetTop(element);
if (Double.IsNaN(top)) top = 0;
switch (e.Key)
{
case Key.Left: left--; break;
case Key.Right: left++; break;
case Key.Up: top--; break;
case Key.Down: top++; break;
}
Canvas.SetLeft(element, left);
Canvas.SetTop(element, top);
}
e.Handled = true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)