wpf:捕获鼠标不起作用

时间:2010-01-04 17:48:15

标签: wpf mouse capture

我正在开发一种outlook日历应用程序,我需要通过鼠标调整约会。 我第一次尝试用拇指没能正常工作,所以我尝试了另一种方式。

我所做的是:

1)在预约面板的底部,我添加了一个矩形来计算调整大小区域(拇指)。约会面板放在网格面板上。 2)我拦截矩形上的事件并将事件发送到此代码:

private Point startPoint;
private void OnResizeElementMouseDown(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;
    this.MouseMove += new MouseEventHandler(ResizeEndElement_MouseMove);
    this.MouseLeftButtonUp += new MouseButtonEventHandler(OnResizeElementMouseUp);
    // some code to perform new height computation
    Mouse.Capture(this);
}

这是拥有拇指的约会面板。

降低身高效果很好。 但增加更难。如果我非常慢地移动鼠标就可以了,如果我将它加速一点,它往往会遗漏约会面板,然后所有MouseMove事件都会丢失。

我认为Mouse.Capture()建议解决这类问题,但事实上并非如此。

有人知道我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:1)

您应该使用实际的Thumb控件。查看MSDN以获取帮助:

How to: Use a Thumb to Enable Dragging

答案 1 :(得分:1)

你应该使用拇指,但要使用鼠标捕捉,覆盖protected override void OnLostMouseCapture(MouseEventArgs e)方法,然后你会知道你是否丢失了捕获。