none
Problemas com evento MouseMove em windows forms C# RRS feed

  • Pergunta

  • Amigos, lendo os tópicos do fórum, fiz um projeto teste para capturar a posição do mouse com o seguinte código:

            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                int x = MousePosition.X;
                int y = MousePosition.Y;
                label1.Text = "Posição X = " + x + " e Posição Y = " + y;
                label1.Refresh();
            }

    Funciona perfeitamente, a posição do mouse é mostrada em tempo real, mas quando copio esse código pra aplicaçao que estou desenvolvendo, não funciona. Essa aplicação consiste em 2 Windows forms, sendo que eles exibem imagens e o segundo form tem seu opacity alterado de modo que ele some e aparece, de maneira sutil, uma transição de imagens.

    Tentei colocar tanto no evento Mousemove do Form1 (principal) quanto no do Form Fade (que some). Simplesmente é como se o evento nao funcionasse. O que pode estar acontecendo?

    Desde já agradeço a atenção.

    sexta-feira, 12 de fevereiro de 2016 19:32

Respostas

  • Lemos, tu estás tentando adicionar um "Controle" no PictureBox.

    Tente algo do tipo:

    pictureBox1.MouseMove += Form1_MouseMove;
    Onde o "Form1_MouseMove" é o nome do teu evento.


    Att., Rafael Simor

    • Marcado como Resposta Lemos1973 sábado, 13 de fevereiro de 2016 19:27
    sábado, 13 de fevereiro de 2016 18:29

Todas as Respostas

  • Boa tarde.

    Não basta copiar o código do evento, tu precisas definir o evento do Form.

    No VS basta ir no Modo Design e verificar a aba Propriedades, lá tem a lista dos eventos; clique duas vezes no evento que tu queres e ele irá gerar o código para o evento vazio.

    Cole ali sua lógica.


    Att., Rafael Simor

    sexta-feira, 12 de fevereiro de 2016 20:15
  • Oi Rafael Simor, obrigado pela resposta. Sim, eu criei o evento mouse move, como vc falou, no C# é assim também, e dentro dele eu colei o código. Simplesmente é como se o evento não estivesse funcionando nesta aplicação específica...
    sábado, 13 de fevereiro de 2016 16:57
  • Amigos, acabo de descobrir o que está acontecendo, quer dizer, mais ou menos: coloquei um picturebox que se adapta a todo o container (form). Ele impede que o form "enxergue" o mouse. Quando diminui ele, deixando parte do form aparecendo, tudo funcionou.

    Bom, para conseguir que os labels sobre ele ficassem transparentes, tive que colocar eles nos controles do picturebox (não entendi direito o funcionamento, mas dá certo), assim:

    label1.BackColor = Color.Transparent;
    pictureBox1.Controls.Add(label1);

    label2.BackColor = Color.Transparent;
    pictureBox1.Controls.Add(label2);

    Então tentei colocar o seguinte código, com o evento, mas dá um erro, quer dizer, falta alguma coisa que não sei o que é:

    pictureBox1.Controls.Add(MouseMove);

    Alguém poderia me explicar o que eu devo fazer para incluir um evento nos controles do Picturebox?

    Desde já agradeço a atenção.

    sábado, 13 de fevereiro de 2016 18:16
  • Lemos, tu estás tentando adicionar um "Controle" no PictureBox.

    Tente algo do tipo:

    pictureBox1.MouseMove += Form1_MouseMove;
    Onde o "Form1_MouseMove" é o nome do teu evento.


    Att., Rafael Simor

    • Marcado como Resposta Lemos1973 sábado, 13 de fevereiro de 2016 19:27
    sábado, 13 de fevereiro de 2016 18:29
  • Isso mesmo, Rafael, obrigado. Consegui resolver criando esse evento e funcionou:

    //criando um evento mousemove no picturebox
    pictureBox1.MouseMove += PictureBox1_MouseMove;

    Obrigado pela dica. Não sabia que o picturebox impedia que o form enxergasse o mouse, muito curioso isso!


    sábado, 13 de fevereiro de 2016 19:27