加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Mousedown事件两次触发(WPF)

发布时间:2020-12-15 18:13:35 所属栏目:百科 来源:网络整理
导读:我目前正在尝试从简单网格上的图像捕获mousedown.我对事件发射没有任何问题,只是它发射了两次.而且因为点击它两次最终会有不同的状态(它会显示一个扩展的图像),直接进行第二次点击会导致问题. 我目前的代码如下: XAML Window x:Class="WpfApplication.MainW
我目前正在尝试从简单网格上的图像捕获mousedown.我对事件发射没有任何问题,只是它发射了两次.而且因为点击它两次最终会有不同的状态(它会显示一个扩展的图像),直接进行第二次点击会导致问题.

我目前的代码如下:

XAML

<Window x:Class="WpfApplication.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 Background="Transparent" x:Name="MainContent" MouseDown="Generic_MouseDown">
        <Image Source="http://www.blogcdn.com/www.engadget.com/media/2011/05/welcome-kansas-city-google-high-speed-internet.jpg" Height="100" Width="100" MouseDown="Generic_MouseDown"/>
    </Grid>
</Window>

码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Generic_MouseDown(object sender,MouseButtonEventArgs e)
    {
        if (((FrameworkElement)e.Source).GetType() == typeof(System.Windows.Controls.Image))
        {
            Console.Out.WriteLine("image clicked");
        }
        else
        {
            Console.Out.WriteLine("grid clicked");
        }

    }
}

因此,当我点击图像时,它会两次发射mousedown.

谢谢!

解决方法

private void Generic_MouseDown(object sender,MouseButtonEventArgs e)
{
    if (((FrameworkElement)e.Source).GetType()   
           == typeof(System.Windows.Controls.Image))
    {
        Debug.WriteLine("image clicked");
        e.Handled = true;
    }
    else
    {
        Debug.WriteLine("grid clicked");
    }

}

您需要将Handled属性设置为true.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读