【发布时间】:2011-10-18 16:36:08
【问题描述】:
当鼠标悬停在 UIElements 上并且用户点击 Ctrl 时,以下代码应该在画布中移动 UIElements。
void keydown(Object sender, KeyEventArgs e)
{
if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
{
control++;
if (control == 1)
{
drag = true;
elem = (UIElement)Mouse.DirectlyOver;
}
else
drag = false;
control %= 2;
}
}
void mousemove(object sender, MouseEventArgs e)
{
Point p = e.GetPosition(canvas);
if (drag)
{
if (elem == null) return;
//Canvas.SetLeft(myButton, p.X); <-- this works, but then why doesn't it work when I generalize it?
Canvas.SetLeft(elem, p.X);
Canvas.SetTop(elem, p.Y);
}
}
任何Shapes 组件,例如当我将鼠标悬停在矩形上并点击控件时,矩形会移动。但它不适用于按钮、文本框、文本视图等。谁能解释一下?
【问题讨论】:
-
在说按钮的情况下是 elem == null 吗?
-
我会写这个声明以防万一出现任何异常......不,elem 不为空......
标签: c# wpf c#-4.0 wpf-controls