Pergunta

Eu tenho um botão que eu aciono OnClick Sempre que houver um clique nesse botão. Eu gostaria de saber qual botão do mouse clicou nesse botão?

Quando eu uso o Mouse.LeftButton ou Mouse.RightButton, ambos me dizem "realsed"Quais são seus estados após o clique.

Eu só quero saber qual clicou no meu botão. Se eu mudar EventArgs para MouseEventArgs, Eu recebo erros.

Xaml: <Button Name="myButton" Click="OnClick">

private void OnClick(object sender, EventArgs e)
{
//do certain thing. 
}
Foi útil?

Solução

Se você estiver apenas usando o evento de clique do botão, o único botão do mouse que o disparará é o botão principal do mouse.

Se você ainda precisa saber especificamente se era o botão esquerdo ou direito, poderá usar a informação do sistema para obtê -lo.

void OnClick(object sender, RoutedEventArgs e)
    {
        if (SystemParameters.SwapButtons) // Or use SystemInformation.MouseButtonsSwapped
        {
            // It's the right button.
        }
        else
        {
            // It's the standard left button.
        }
    }

Editar: O WPF equivalente à informação do sistema é o SystemParameters, que podem ser usados. Embora você possa incluir o System.Windows.Forms como uma referência para obter a informação do SystemInImining sem afetar adversamente o aplicativo de qualquer forma.

Outras dicas

Você pode lançar como abaixo:

MouseEventArgs myArgs = (MouseEventArgs) e;

E então obtenha as informações com:

if (myArgs.Button == System.Windows.Forms.MouseButtons.Left)
{
    // do sth
}

A solução funciona no vs2013 e você não precisa mais usar o evento Mouseclick;)

Você está certo, José, é com o evento Mouseclick. Mas você deve adicionar um pouco de delegado:

this.button1.mousedown += new System.windows.forms.mouseeventhandler (this.mymousedouwn);

E use este método em seu formulário:

    private void MyMouseDouwn(object sender, MouseEventArgs e) 
    {
        if (e.Button == MouseButtons.Right)
           this.Text = "Right";

        if (e.Button == MouseButtons.Left)
            this.Text = "Left";
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top