none
Adicionando MouseRightButtonUp dinâmicamente RRS feed

  • Pergunta

  • Estou criando um retângulo em tempo de execussão com os seguintes comandos:

    Rectangle recLongitudinal;        
    recLongitudinal = new Rectangle();
    recLongitudinal.Margin = new Thickness(0, 0, 0, 0);
    recLongitudinal.Height = 100;
    recLongitudinal.Width = 1;
    recLongitudinal.VerticalAlignment = System.Windows.VerticalAlignment.Top;
    recLongitudinal.StrokeDashCap = PenLineCap.Square;
    recLongitudinal.StrokeEndLineCap = PenLineCap.Flat;
    
    

     

    Desejo agora que, ao clicar nesse retângulo ele execute o método pintaSecao(s).

    Tentei usar o  MouseRightButtonUp sem sucesso (não achei materiais claros na internet para a minha situação...).

    Alguém poderia me ajudar?  Estou usando C# 4.0 + WPF.


    ------------------ Thanks!
    • Movido Rui SantosModerator quarta-feira, 20 de outubro de 2010 13:15 (De:.NET Development - Geral)
    quarta-feira, 20 de outubro de 2010 02:26

Respostas

  • Neste caso, você teria que fazer um evento para o MouseLeftButtonUp e criar a seção e chamar PintaSecao:

    recLongitudinal.MouseLeftButtonUp += RetanguloMouseUp;

    private void RetanguloMouseUp(object sender, MouseRoutedEventArgs e)
    {
    //  Calcula secao
      PintaSecao(s);
    }

    Bruno


    MVP Client Development - http://msmvps.com/blogs/bsonnino
    • Marcado como Resposta Tiago Baroni sexta-feira, 22 de outubro de 2010 18:19
    quinta-feira, 21 de outubro de 2010 13:08

Todas as Respostas

  • Tiago,

    Acredito que você tenha que usar o MouseLeftButtonUp que se refere ao botão esquerdo do Mouse.

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quarta-feira, 20 de outubro de 2010 11:37
  • Mas então Rogério, qual a forma de colocar isso, pois tentei

    recLongitudinal.MouseLeftButtonUp += pintaSecao(s);
    

    e não deu certo...


    ------------------ Thanks!

    quarta-feira, 20 de outubro de 2010 12:24
  • Tiago,

    Eu não conheço muito de WPF, acho melhor você postar a sua dúvida no forum de WPF ou Silverlight que fica mais fácil do pessoal te ajudar.

    at.,


    Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono)
    quarta-feira, 20 de outubro de 2010 12:29
  • Tiago,

        Estou movendo a sua duvida para o forum Windows Presentation Foundation - WPF, quando tiver mais duvidas sobre o assunto procure postar diretamente nele tudo bem ?


    Se não da certo como voce esta fazendo... Tente fazer de um jeito totalmente diferente....
    quarta-feira, 20 de outubro de 2010 13:15
    Moderador
  • Você pode usar algo como

    recLongitudinal.MouseLeftButtonUp += (s,e) => pintaSecao(s);

    Só que precisa colocar um Fill no rectangle, senão ele não irá pegar o clique. Se você quer um rectangle transparente, faça:

    recLongitudinal.Fill = new SolidColorBrush(Colors.Transparent);

    Bruno


    MVP Client Development - http://msmvps.com/blogs/bsonnino
    quarta-feira, 20 de outubro de 2010 13:43
  • vc tem que criar o evento para o retangulo

    • Sugerido como Resposta Rafael Lauratto segunda-feira, 28 de fevereiro de 2011 20:10
    quarta-feira, 20 de outubro de 2010 15:49
  • Eu já tenho um Fill... Ele está algumas linhas abaixo, por isso não aparece aqui...

    Eu tentei usar o recLongitudinal.MouseLeftButtonUp += (s, e) => pintaSecao(s); mas deu erro tanto na variável s em (s, e) e no chamamento do método pintaSecao(s).

    Alguma idéia?


    ------------------ Thanks!
    quarta-feira, 20 de outubro de 2010 23:17
  • Provavelmente, o parâmetro s de sua chamada de PintaSecao não é um object (s é o sender do evento). Como está a chamada PintaSecao?

    []s

    Bruno


    MVP Client Development - http://msmvps.com/blogs/bsonnino
    quinta-feira, 21 de outubro de 2010 07:12
  • Na verdade pintaSecao(s) chama a função (e não o método) que determina o Brush que vai pintar o Rectangle e "s" é uma variável Double contendo a seção do retangulo que deve ser pintada.

    pintaSecao(s) consta assim no meu código:

    private void pintaSecao(Double secao)
    {
    //Todo meu código aqui.
    }
    
    Qual seria a forma correta para o evento MouseLeftButtonUp chamar essa função?
    ------------------ Thanks!
    quinta-feira, 21 de outubro de 2010 12:57
  • Neste caso, você teria que fazer um evento para o MouseLeftButtonUp e criar a seção e chamar PintaSecao:

    recLongitudinal.MouseLeftButtonUp += RetanguloMouseUp;

    private void RetanguloMouseUp(object sender, MouseRoutedEventArgs e)
    {
    //  Calcula secao
      PintaSecao(s);
    }

    Bruno


    MVP Client Development - http://msmvps.com/blogs/bsonnino
    • Marcado como Resposta Tiago Baroni sexta-feira, 22 de outubro de 2010 18:19
    quinta-feira, 21 de outubro de 2010 13:08