Немогу заставить перемещаться мой UserControl
От: Аноним  
Дата: 16.08.04 15:53
Оценка:
Приветствую всех!
Я новичек в C# но это пройдет со временем.
Я немогу заставить перемещаться мой System.Windows.Forms.UserControl
по System.Windows.Forms.Panel MyPanel. Подскажите как это сделать ?
В методе UserControl_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
Делаю вот такое присвоение:
this.Location = new Point(e.X,e.Y);
В результате при перемещении мой UserControl нивиден, и появляется хрен знает где
при отпускании мыши.
Где грабли ?

16.08.04 20:00: Перенесено модератором из '.NET' — TK
Re: Немогу заставить перемещаться мой UserControl
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.08.04 23:59
Оценка: 6 (2)
Здравствуйте, <Аноним>, Вы писали:

А>Делаю вот такое присвоение:

А>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 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Немогу заставить перемещаться мой UserControl
От: Vladislav_007 Россия www.bsystems.org
Дата: 17.08.04 18:37
Оценка:
Огромное спасибо.
С уважением шарпаламер.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.