Pergunta

usando este evento o rótulo simplesmente desaparece, como devo fazer isso?

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

Solução

A localização de label4 é em relação ao recipiente (Form ou controle pai), a posição do cursor pode ser em relação ao ecrã.

Você precisa ajustar a localização. Por exemplo, se o recipiente é a Form pode encontrar sua localização na tela e calcular por isso a localização do cursor em relação à tela.

Esta é apenas uma possibilidade para a causa, mas este é acontece muito:)

Outras dicas

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;

        }

Uso do formulário PointToClient () para traduzir as coordenadas do mouse X / Y em pontos que são relativos ao formulário, que deve fazê-lo.

Edit: Use o mouse args evento propriedades do objeto em vez disso:

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

PS perdão a VB, não C # neste PC

A localização de um elemento é relativo a seu pai. Neste caso, se você está usando a posição absoluta do mouse como a sua localização.

Você vai precisar de traduzir a posição do mouse no sistema de coordenadas do elemento pai.

Use a PointToClient método em elemento pai do rótulo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top