как переместить метку на winform во время выполнения

StackOverflow https://stackoverflow.com/questions/1803331

  •  05-07-2019
  •  | 
  •  

Вопрос

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

    private void label4_MouseMove(object sender, MouseEventArgs e)
    {
        label4.Location = new Point(Cursor.Position.X, Cursor.Position.Y);
    }
Это было полезно?

Решение

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

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

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

Другие советы

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;

        }

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

Изменить. Вместо этого используйте свойства объекта аргументов мышиных событий:

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top