2009-08-10 4 views
2

나는 WPF 텍스트 상자, 다음과 같이 정의되어있다 : 내가 좋아하는 것처럼WPF 텍스트 상자의 DoubleClick 이벤트가 발생 신속

<TextBox Text="{Binding Path=/Comments}" 
    Margin="351,193.91,10,36" 
    x:Name="txtComments" 
    IsReadOnly="True" 
    VerticalScrollBarVisibility="Auto" 
    LostFocus="txtComments_LostFocus" 
    MouseDoubleClick="txtComments_MouseDoubleClick" 
    AcceptsReturn="True" /> 

이 정확히 작동을; 그러나 VerticalScrollBars가 표시되면 ScrollBar를 빠르게 클릭하면 txtComments_MouseDoubleClick 이벤트가 발생합니다. 이 동작을 변경하거나 텍스트 상자 본문 대신 ScrollBar를 클릭하여 이벤트가 시작되었음을 감지 할 수있는 방법이 있습니까?

내가 이것을하고 싶은 주된 이유는 스크롤 막대를 두 번 클릭하여 아래로 스크롤하려고하면 이벤트가 발생하여 응용 프로그램이 해당 경로로 내려가는 것이고 이는 그렇지 않은 경우 매우 성가시다. 사용자가 의도 한 행동. 당신의 더블 클릭 핸들러에서

답변

11

MouseButtonEventArgsOriginalSource 속성을 확인합니다. 해당 소스가 실제 스크롤 막대 (반복 버튼)인지 또는 텍스트 상자인지 여부를 알려줍니다. 다음과 같음 :

if (e.OriginalSource is TextBox) 
{ 
    // Do your stuff. 
} 
else 
{ 
    // From the scroll-bar. 
} 
+0

나 한테서도 고맙습니다. 참고 : TextBlock을 TextBox로 수정해야했습니다. 어쩌면 다른 사람을 도울 수 있습니다. – ccalboni

+0

샤카 라카 붐이 다이나마이트를 간다. 고마워, 내가 찾고 있었던 것이 이것이다. – ElMatador

관련 문제