我有一些麻烦,首先要弄清楚的是我在一个预先制作的辅助文件,帮助允许在运行时间中的移动发现了一些匿名委托事件退订的方法。 我想取消这些事件的原因是,这样的控制(在这种情况下按钮),将再次成为且未被锁定能够移动。 这里是辅助类中的方法:
public static void Init(Control control)
{
Init(control, Direction.Any);
}
public static void Init(Control control, Direction direction)
{
Init(control, control, direction);
}
public static void Init(Control control, Control container, Direction direction)
{
bool Dragging = false;
Point DragStart = Point.Empty;
control.MouseDown += delegate(object sender, MouseEventArgs e)
{
Dragging = true;
DragStart = new Point(e.X, e.Y);
control.Capture = true;
};
control.MouseUp += delegate(object sender, MouseEventArgs e)
{
Dragging = false;
control.Capture = false;
};
control.MouseMove += delegate(object sender, MouseEventArgs e)
{
if (Dragging)
{
if (direction != Direction.Vertical)
container.Left = Math.Max(0, e.X + container.Left - DragStart.X);
if (direction != Direction.Horizontal)
container.Top = Math.Max(0, e.Y + container.Top - DragStart.Y);
}
};
}
这里就是我如何通过调用方法订阅这些事件;
ControlMover.Init(this.Controls["btn" + i]);
我读过有关MSDN上的一些方法有关创建一个局部变量持有这些事件,然后通过这样的方式退订退订这些,但我似乎无法在我自己的项目得到这个工作。 我如何去退订这些事件使我的控制再次成为固定的位置?