【发布时间】:2010-07-16 13:42:21
【问题描述】:
我创建了一个非常简单的测试控件,它在画布上(在其他容器中,但无关紧要)上有一个Rectangle。 Rectangle 具有鼠标按下、鼠标移动和鼠标向上的事件处理程序。如果我在 Rectangle 的 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 中是否有我尚未了解的预期?
【问题讨论】:
-
我注意到我正在开发的 WPF 应用程序中存在类似问题,但在按下其他鼠标按钮时尝试捕获鼠标时忽略了它。意识到除了左键之外它对其他任何东西都不起作用后,我放弃了这种方法并且没有进一步调查这个问题。
标签: silverlight user-controls mouse