Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在运行时移动winform上的标签_C#_Label_Move - Fatal编程技术网

C# 如何在运行时移动winform上的标签

C# 如何在运行时移动winform上的标签,c#,label,move,C#,Label,Move,使用这个事件,标签就消失了,我该怎么做 private void label4_MouseMove(object sender, MouseEventArgs e) { label4.Location = new Point(Cursor.Position.X, Cursor.Position.Y); } label4的位置相对于容器(Form或父控件),光标位置可能相对于屏幕 你需要调整位置。例如,如果容器是表单,您可以在屏幕中找到它的位置,并通过它计

使用这个事件,标签就消失了,我该怎么做

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

label4
的位置相对于容器(
Form
或父控件),光标位置可能相对于屏幕

你需要调整位置。例如,如果容器是
表单
,您可以在屏幕中找到它的位置,并通过它计算光标相对于屏幕的位置


这只是原因的一种可能性,但这种可能性经常发生:)

元素的位置相对于其父元素。在这种情况下,尽管您使用鼠标的绝对位置作为其位置

您需要将鼠标位置转换为父元素的坐标系

使用标签的父元素上的方法。

使用表单的PointToClient()函数将鼠标的X/Y坐标转换为与表单相关的点,这应该可以做到

编辑:改为使用鼠标事件参数对象属性:

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

请原谅VB,这台电脑上没有C#

根据此信息启动并运行它。
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;

        }