2009-12-09 13 views
22

पर कब्जा माउस क्लिक मैं एक TextBox पर माउस क्लिक पर कब्जा करना चाहते हैं:WPF पाठ बॉक्स

<Window x:Class="WpfApplication2.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window1" Height="300" Width="300"> 
    <Grid> 
     <TextBox x:Name="t" MouseDown="TextBox_MouseDown" 
       MouseLeftButtonDown="TextBox_MouseLeftButtonDown" 
       MouseLeftButtonUp="TextBox_MouseLeftButtonUp" 
       Height="50" /> 
    </Grid> 
</Window> 

अब मैं केवल एक माउस क्लिक घटना उपयोगकर्ता द्वारा पहली बार TextBox में प्रवेश करती है प्राप्त करते हैं। इस TextBox के बाद कीबोर्ड फोकस है, मुझे अब माउस क्लिक ईवेंट नहीं मिलता है। कोई काम यह कैसे काम करने के लिए?

+0

आपके लिए फोकस पाने की क्षमता महत्वपूर्ण है? शायद आप इसे अक्षम कर सकते हैं? – levanovd

उत्तर

39

TextBox Class

पाठ बॉक्स में निर्मित MouseUp और MouseDown घटनाओं बुदबुदाती के लिए से निपटने की है। नतीजतन, कस्टम इवेंट हैंडलर जो माउसअप या को सुनने के लिए टेक्स्टबॉक्स से माउसडाउन ईवेंट नहीं कहा जाएगा। आप इन घटनाओं को प्रतिक्रिया बजाय सुरंग PreviewMouseUp और PreviewMouseDown घटनाओं के लिए सुनने के लिए, या HandledEventsToo तर्क (यह बाद विकल्प कोड के माध्यम से ही उपलब्ध है) के साथ संचालकों रजिस्टर करने के लिए की जरूरत है। को संभालने वाली घटना को चिह्नित न करें जब तक कि आप जानबूझकर इन घटनाओं के टेक्स्टबॉक्स मूल संचालन को अक्षम नहीं करते हैं, और ध्यान रखें कि यह नियंत्रण के UI पर उल्लेखनीय प्रभाव डालता है।

आप में कोड तुम सिर्फ MouseLeftButtonUp

21

आप PreviewMouseDown घटना का उपयोग कर सकते सक्रिय हो रहे हैं और किसी भी क्लिक कि जिस तरह से नियंत्रण प्रक्रिया के आंतरिक भागों से पहले क्लिक पर कब्जा:

<TextBox x:Name="t" PreviewMouseDown="TextBox_MouseDown" Height="32" Width="274" /> 
0

यहाँ उन लोगों के लिए कोड उदाहरण जो एमवीवीएम

यह inheriting from Control.

की घटनाओं के लिए ठीक काम करता है

ViewModel में:

देखें (XAML) में:

<TextBox Grid.Row="1" x:Name="MerchantReference" MaxLength="10" IsReadOnly="True" 
          Text="{Binding MerchantReference, Mode=OneWay}" > 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="MouseDoubleClick" > 
      <i:InvokeCommandAction Command="{Binding MerchantReferenceCopyToClipboard}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</TextBox> 

आशा इस आप कुछ समय की बचत होती है।