c# - 如何检查 wpf C# 中的鼠标按钮是左键还是右键?

标签 c# wpf wpf-controls mouse

我正在尝试这段代码,实际上我只创建了一个位于 Click="button_Click" 上的事件处理程序。

XAML:

<Window x:Class="WPFAPP.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WPFAPP"
    mc:Ignorable="d"
    Title="Window1" Height="447.625" Width="562">

    <Grid>
        <Button x:Name="btn1" Content="Button1" Click="button_Click" HorizontalAlignment="Left" Margin="26,22,0,0" VerticalAlignment="Top" Width="75"/>
        <Button x:Name="btn2" Content="Button2" Click="button_Click" HorizontalAlignment="Left" Margin="26,61,0,0" VerticalAlignment="Top" Width="75"/>
        <Button x:Name="btn3" Content="Button3" Click="button_Click" HorizontalAlignment="Left" Margin="26,100,0,0" VerticalAlignment="Top" Width="75"/>
        <Button x:Name="btn4" Content="Button4" Click="button_Click" HorizontalAlignment="Left" Margin="26,137,0,0" VerticalAlignment="Top" Width="75"/>
        <Button x:Name="btn5" Content="Button5" Click="button_Click" HorizontalAlignment="Left" Margin="26,174,0,0" VerticalAlignment="Top" Width="75"/>
    </Grid>
</Window> 

C# 背后的代码:

private void button_Click(object sender, RoutedEventArgs e)
{
    Button button = (Button)sender;
    if(e.Equals(Mouse.RightButton))
    {
        button.ClearValue(Button.BackgroundProperty);
        button.Background = Brushes.Green;
    } 
} 

最佳答案

Click 仅针对最有限的交互而设计,如果您使用更高级的鼠标事件,您将获得一个 MouseButtonEventArgs,它会为您提供有关该事件的所有详细信息。

原因是点击不是鼠标事件,你也可以用触摸、手写笔触发它,你甚至可以在突出显示时按回车键用键盘触发它

所以试试 MouseDown、MouseUp 或 DoubleClick

例如

<Button MouseDoubleClick="Button_MouseDoubleClick" >Click me</Button>
private void Button_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    if(e.ChangedButton == MouseButton.Right)
    {
    }
    e.Handled = true;
}

或鼠标按下

<Button MouseDown="Button_MouseDown" >Click me</Button>
private void Button_MouseDown(object sender, MouseButtonEventArgs e)
{
    if(e.ChangedButton == MouseButton.Right)
    {
    }
    e.Handled = true;
}

关于c# - 如何检查 wpf C# 中的鼠标按钮是左键还是右键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41718317/

相关文章:

c# - WPF:以编程方式更改具有自定义样式的控件的颜色

c# - 新手错误: XamlParseException occured in WPF application

c# - 如何获取 WPF 中组框中的控件列表

c# - 绘制立方体的无 Glu 示例?

c# - 选择 ListBox 项返回 null

c# - 如何根据条件从列表中减去属性值

c# - 如何以编程方式更改 wpf 窗口中的标题?

c# - 保持控制台应用程序在后台运行的最佳方法是什么?

c# - SQL 的替代方案作为客户端存储

c# - 圆形进度条粗细