как переместить метку на winform во время выполнения - PullRequest
3 голосов
/ 26 ноября 2009

при использовании этого события ярлык просто исчезает, как мне это сделать?

    private void label4_MouseMove(object sender, MouseEventArgs e)
    {
        label4.Location = new Point(Cursor.Position.X, Cursor.Position.Y);
    }

Ответы [ 4 ]

5 голосов
/ 07 декабря 2011
handle these three event ...
Control actcontrol;
 Point   preloc;
 void label1_Mousedown(object sender, MouseEventArgs e)
        {

            actcontrol = sender as Control;
            preloc = e.Location;
            Cursor = Cursors.Default;


        }
        void label1_MouseMove(object sender, MouseEventArgs e)
        {
            if (actcontrol == null || actcontrol != sender)
                return;
            var location = actcontrol.Location;
            location.Offset(e.Location.X - preloc.X, e.Location.Y - preloc.Y);            
            actcontrol.Location = location;

        }
        void label1_MouseUp(object sender, MouseEventArgs e)
        {
            actcontrol = null;
            Cursor = Cursors.Default;

        }
3 голосов
/ 26 ноября 2009

Используйте функцию PointToClient () формы для перевода координат X / Y мыши в точки, относящиеся к вашей форме, которые должны это сделать.

Редактировать: Вместо этого используйте свойства объекта args события мыши:

Label1.Location = New Point(e.X, e.Y)

PS простите VB, нет C # на этом ПК

3 голосов
/ 26 ноября 2009

Расположение label4 относительно контейнера (Form или родительский элемент управления), позиция курсора может быть относительно экрана.

Вам необходимо настроить местоположение. Например, если контейнером является Form, вы можете найти его местоположение на экране и рассчитать с его помощью местоположение курсора относительно экрана.

Это только одна возможность по причине, но такая случается очень часто:)

1 голос
/ 26 ноября 2009

Расположение элемента относительно его родителя. В этом случае вы используете абсолютное положение мыши в качестве местоположения.

Вам нужно будет перевести положение мыши в систему координат родительского элемента.

Используйте метод PointToClient в родительском элементе метки.

...