【发布时间】:2013-12-18 04:27:56
【问题描述】:
我有一个非常简单的应用程序,但它给出了一个问题。我有一个按钮(在网格上),我想知道,当用户在运行时单击它时,用户单击了按钮的哪一部分(X,Y 坐标)。现在,我无法在 Click 事件处理程序中跟踪鼠标位置,因为它的参数“e”属于“RoutedEventArgs”类型,并且它没有给出鼠标点击发生点的位置。
因此我尝试了另一个事件处理程序,“MouseLeftButtonDown”事件。这有一个参数“e”,它给出了一个 GetPosition() 方法,可以给出鼠标光标位置。但问题是,在运行时,当我单击按钮时,根本不会调用此事件处理程序!这是我的两个事件处理程序的代码:
private void button1_Click(object sender, RoutedEventArgs e)
{
string sName = sender.GetType().Name;
string sSrc = e.Source.ToString();
string soSrc = e.OriginalSource.ToString();
MessageBox.Show("Sender Name: " + sName + ",\nSource: " + sSrc + ",\nOrigSource: " + soSrc + ",\nevent:" + e.RoutedEvent.ToString());
}
private void button1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
string sName = sender.GetType().Name;
string sSrc = e.Source.ToString();
string soSrc = e.OriginalSource.ToString();
textBox1.Text = "LeftButtonPressed on button1";
}
如果我只保留点击事件处理程序,它可以工作。如果我只保留 MouseLeftButtonDown 事件处理程序,它就不起作用。如果我两者都保留,那么只会调用 Click 事件处理程序!有人可以帮忙吗??
提前致谢。
【问题讨论】:
-
删除消息框