Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wpf Button.MouseLeftButtonDown根本不起作用_C#_Wpf_Mouseleftbuttondown - Fatal编程技术网

C# wpf Button.MouseLeftButtonDown根本不起作用

C# wpf Button.MouseLeftButtonDown根本不起作用,c#,wpf,mouseleftbuttondown,C#,Wpf,Mouseleftbuttondown,我正在努力学习MouseLeftButtonDown是如何工作的,但到现在为止还没有任何秘密 当我点击按钮时,没有任何东西需要花费 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

我正在努力学习MouseLeftButtonDown是如何工作的,但到现在为止还没有任何秘密

当我点击按钮时,没有任何东西需要花费

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <StackPanel Name="sss">
            <Button x:Name="b1" Height="213" MouseLeftButtonDown="sss_MouseDown"/>
        </StackPanel>
    </Grid>
</Window>
从:

某些控件类可能具有鼠标按钮事件的固有类处理。鼠标左键按下事件是控件中最有可能具有类处理的事件。类处理通常将底层鼠标类事件标记为已处理。一旦事件被标记为已处理,通常不会引发附加到该元素的其他实例处理程序。在UI树中以冒泡方向连接到元素的任何其他类或实例处理程序通常也不会引发

简而言之:按钮处理此事件可能是为了生成自己的
MouseDown
MouseClick
事件。由于按钮将事件标记为已处理,因此不会调用您自己的处理程序。尝试使用一个更标准的事件


该页面还列出了一些解决方法,但通常我会避开这些方法,使用更标准的解决方案。

尝试简单的
PreviewMouseLeftButtonDown
event

我也遇到了同样的问题,但使用了PreviewMouseLeftButtonDown事件。成功了。

您的代码隐藏是什么样子的?当按下鼠标左键时,您试图完成什么?您能解释一下错误是什么吗?已编辑…………为什么不使用单击事件?然后WPF希望我猜什么事件会起作用??!?!不,它希望您阅读它的文档。通常,您会使用
单击
事件与按钮进行交互-使用
MouseLeftButtonDown
是非常罕见的事情!是的,你是对的,但是我怎么能用鼠标按钮呢?
private void sss_MouseDown(object sender, MouseButtonEventArgs e)
        {
            MessageBox.Show("3   ->>>>>" + ((Control)sender).Name);
        }