Como posso determinar qual botão do mouse elevou o evento de clique no WPF?
-
13-09-2019 - |
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.
}
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";
}