저는 아주 간단한 응용 프로그램을 가지고 있지만 문제가 있습니다. 나는 (Grid 상에) 버튼을 가지고 있으며, 사용자가 런타임에 그것을 클릭 할 때, 사용자가 클릭 한 버튼의 부분 (X, Y 좌표)을 알고 싶다. 이제 매개 변수 "e"가 "RoutedEventArgs"유형이므로 Click 이벤트 핸들러에서 마우스 위치를 추적 할 수 없으며 마우스 클릭이 발생한 지점의 위치를 제공하지 않습니다.Wpf 응용 프로그램이 이벤트에 올바르게 응답하지 않습니다.
따라서 다른 이벤트 처리기 인 "MouseLeftButtonDown"이벤트를 시도했습니다. 여기에는 마우스 커서 위치를 지정할 수있는 GetPosition() 메서드를 제공하는 "e"매개 변수가 있습니다. 하지만 문제는 런타임에이 버튼을 클릭하면이 이벤트 핸들러가 전혀 호출되지 않는다는 것입니다. 두 이벤트 처리기에 대한 내 코드는 다음과 같습니다.
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 이벤트 핸들러 만 호출됩니다. 아무도 도와 줄 수 있니 ??
미리 감사드립니다.
가 제거 당신이 같이 할 이벤트가 처리 된 경우에도 화재 리스너를 추가 할 수 있습니다 messagebox –