Здравствуйте, <Аноним>, Вы писали:
А>Делаю вот такое присвоение:
А>this.Location = new Point(e.X,e.Y);
А>В результате при перемещении мой UserControl нивиден, и появляется хрен знает где
А>при отпускании мыши.
А>Где грабли ?
Ой, тут проще сказать, что ты сделал правильно.

Ты присваиваешь локальные координаты одного контрола туда где требуются локальные координаты другого. Потом ты не делаш захват мыши. В обшем, вто тебе пример:
private void UserControl1_MouseMove(object sender, MouseEventArgs e)
{
if (this.Capture)
{
// Преобразуем координаты между контролами.
Point pt = this.Parent.PointToClient(
this.PointToScreen(e.Location));
// Добавляем отступ, чтобы контрол не прыгал.
pt.Offset(-_dragOffset.X, -_dragOffset.Y);
this.Location = pt;
}
}
Point _dragOffset;
private void UserControl1_MouseDown(object sender, MouseEventArgs e)
{
// Если фокус не захватить, то при выходе мыши из контрола
// мышышиные сообщения перестанут приходить.
this.Capture = true;
// Отступ мыши от при начале дрыга.
_dragOffset = e.Location;
}
private void UserControl1_MouseUp(object sender, MouseEventArgs e)
{
// При отмускании мыши нужно освободить захват.
this.Capture = false;
}
... << RSDN@Home 1.1.4 beta 2 >>