Usuário com melhor resposta
Adicionando MouseRightButtonUp dinâmicamente

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)
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
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) -
-
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) -
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.... -
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 -
vc tem que criar o evento para o retangulo
- Sugerido como Resposta Rafael Lauratto segunda-feira, 28 de fevereiro de 2011 20:10
-
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! -
-
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:
Qual seria a forma correta para o evento MouseLeftButtonUp chamar essa função?private void pintaSecao(Double secao) { //Todo meu código aqui. }
------------------ Thanks! -
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