如何在C# WPF中的画布上监听左键单击?

3
我将为您翻译有关IT技术的内容。以下是需要翻译的文本:

我正在尝试监听窗口上任何地方(除了按钮所在的位置,但稍后我会处理此问题)的鼠标单击事件,然后返回该位置的点(x,y)。

以下是相关代码:

 private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    Console.WriteLine("mouseLeft is clicked");
    Point x = e.MouseDevice.GetPosition(this);
    Console.WriteLine(x.X);
    Console.WriteLine(x.Y);
}

<Canvas MouseLeftButtonDown="Grid_MouseLeftButtonDown">

当我点击时,没有任何输出。我到底做错了什么?第一种方法在mainWindow.Xaml.cs中。
提前致谢。
2个回答

5

将背景设置为透明,并设置画布的大小!


3
有时候在GUI应用程序中,控制台会无法正确输出信息,尝试使用Debug.WriteLine、MessageBox.Show或设置断点来查看事件是否被触发。
你的代码看起来完全没问题。

我刚刚使用了messagebox.show,但没有成功。该方法没有被调用。 - Cody
你的画布里有什么东西吗?还是空白的? - scmccart
我有3个按钮,但除此之外它是空白的。 - Cody
5
好的,那么问题就在这里。对于 WPF 控件,必须有一些可见部分与它所在位置的背景不同,才能够被点击。如果在你的画布上设置一个与其背景颜色不同的背景色,你就应该能够接收到点击事件了。 - scmccart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接