none
Captura de coordenada do MouseDown em sub-containers RRS feed

  • Pergunta

  • private void Form1_Load(object sender, EventArgs e)
            {
                Center_Text();
    
                ListViewItem testeItem = new ListViewItem();
                testeItem.Text = "teste";
                testeItem.ForeColor = SystemColors.WindowFrame;
                listView1.Items.Add(testeItem);
    
                foreach(Control x in this.Controls) {
                    if(!(x is TextBox)) {
                        x.MouseDown += new MouseEventHandler(CaptureMouse);
                    }
                }
            }
    
            private void CaptureMouse(object sender, MouseEventArgs e)
            {
                label1.Text = e.Location.X.ToString() + ", " + e.Location.Y.ToString();
            }

    Utilizando do código acima, fui capaz de capturar vários pontos do meu Form (estou a usar WinForms). Acontece que, para organizar a interface, estou usando TableLayoutPanel + Panels dentro das colunas, e quando clico nos controles que estão dentro desses painéis (uma ListView, por exemplo), a coordenada do mouse não é capturada. Por que isso ocorre e como soluciono?

    Ps.: por que não consigo postar imagens? Como verifico minha conta por aqui?

    sábado, 31 de outubro de 2015 03:06

Respostas

  • @Mister

    TableLayoutPanel, pode ser complexo as vezes de programar! no teu caso, voce vai ter de re -criar o codigo da seguinte form:

    foreach(Control x in this.Controls) { if(!(x isTableLayoutPanel))

    {

    depois fazer um outro teste pra ver se existe txtbox or um outro control

    so depois podes chamar este codigo--- x.MouseDown += new MouseEventHandler(CaptureMouse);


    A flower cannot blossom without sunshine, and man cannot live without love.

    • Sugerido como Resposta Eduardo xUni sábado, 31 de outubro de 2015 22:21
    • Não Sugerido como Resposta Eduardo xUni sábado, 31 de outubro de 2015 22:22
    • Marcado como Resposta Marcos SJ quinta-feira, 26 de novembro de 2015 16:48
    sábado, 31 de outubro de 2015 14:02
    Moderador

Todas as Respostas

  • @Mister

    TableLayoutPanel, pode ser complexo as vezes de programar! no teu caso, voce vai ter de re -criar o codigo da seguinte form:

    foreach(Control x in this.Controls) { if(!(x isTableLayoutPanel))

    {

    depois fazer um outro teste pra ver se existe txtbox or um outro control

    so depois podes chamar este codigo--- x.MouseDown += new MouseEventHandler(CaptureMouse);


    A flower cannot blossom without sunshine, and man cannot live without love.

    • Sugerido como Resposta Eduardo xUni sábado, 31 de outubro de 2015 22:21
    • Não Sugerido como Resposta Eduardo xUni sábado, 31 de outubro de 2015 22:22
    • Marcado como Resposta Marcos SJ quinta-feira, 26 de novembro de 2015 16:48
    sábado, 31 de outubro de 2015 14:02
    Moderador
  • Boa tarde,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente

    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 26 de novembro de 2015 16:48