tags:

views:

81

answers:

2

hello

I am developing an kind of outlook calendar application where I need to make the appointment resizable from mouse. My first try with a thumb did not work properly so I tried another way.

What I did is that:

1) on the botton of the appointmennt panel I added a rectangle to figure out the resize zone (the thumb). The appointment panel is put on a grid panel. 2) I intercept down event on the rectangle and send event to this code:

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);
}

where this is the appointment panel that own the thumb.

Decreasing height works well. But increasing is more difficult. If I move the mouse very very slowly it's OK, if I speed it up a little bit it tends to leave out the appointment panel and then all MouseMove event are lost.

I thought Mouse.Capture() was propose to solve this kind of problem, but in fact not.

Does anybody know what is wrong in my code?

A: 

You should be using an actual Thumb control. Check out MSDN for help:

How to: Use a Thumb to Enable Dragging

Aviad P.
A: 

you should use a thumb, but to play with mouse capture, override the protected override void OnLostMouseCapture(MouseEventArgs e) method, then you will know if you have lost the capture.

Aran Mulholland