我创建了一个非常简单的测试控件,在画布上有一个矩形(在其他容器中,但不重要)。该矩形具有鼠标按下、移动和释放的事件处理程序。如果我在矩形的MouseLeftButtonDown事件中捕获鼠标,则不会收到相应的MouseLeftButtonUp事件。
一些代码:
一些代码:
private void rect1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (_captured = CaptureMouse())
{
_offset = new Point(Canvas.GetLeft(rect1), Canvas.GetTop(rect1));
_origin = e.GetPosition(RootCanvas);
e.Handled = true;
}
}
private void rect1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (_captured)
{
ReleaseMouseCapture();
_captured = false;
e.Handled = true;
}
}
我还为容器元素附加了事件处理程序,只是为了确保它们中没有一个会以某种方式获取鼠标松开事件,但没有一个元素获取到该事件。我是否还有一些未学习的关于Silverlight的期望?