2012-05-23 16 views
7

मैं माइक्रोसॉफ्ट यूआई स्वचालन ढांचे के साथ किसी पाठ फ़ील्ड/पाठ बॉक्स तत्व पर एक पाठ सेट करना चाहते हैं, एक AutomationElementControlType.Edit या ControlType.Document से पर मतलब है कि मिलता है।सेट पाठ और परिवर्तन घटना

फिलहाल मैं TextPattern उपयोग कर रहा हूँ इन AutomationElements में से एक से पाठ प्राप्त करने के लिए:

TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern); 
string text = tp.DocumentRange.GetText(-1).Trim(); 

लेकिन अब मैं AutomationElement में एक नया पाठ सेट करना चाहते हैं। मुझे TextPattern कक्षा में इसके लिए कोई विधि नहीं मिल रही है। इसलिए मैं ValuePattern उपयोग करने के लिए कोशिश कर रहा हूँ, लेकिन मुझे यकीन है कि अगर यह करने के लिए सही रास्ता है नहीं कर रहा हूँ:

ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern; 
value.SetValue(insertText); 

वहाँ पाठ मान को सेट करने के लिए एक अन्य तरीका है?

एक अन्य प्रश्न यह है कि जब मैं Edit/Document तत्व पर पाठ बदल गया था तो मुझे एक घटना कैसे मिल सकती है? मैं TextChangedEvent का उपयोग करने की कोशिश की, लेकिन मैं किसी भी घटनाओं निकाल नहीं मिलता जब पाठ बदलने:

AutomationEventHandler ehTextChanged = new AutomationEventHandler(text_event); 
Automation.AddAutomationEventHandler(TextPattern.TextChangedEvent, element, TreeScope.Element, ehTextChanged); 

private void text_event(object sender, AutomationEventArgs e) 
{ 
    Console.WriteLine("Text changed"); 
} 

उत्तर

6

आप ValuePatern उपयोग कर सकते हैं, जिस तरह से यह करने के लिए है। मेरे अपने कोड से:

ValuePattern etb = EditableTextBox.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern; 
etb.SetValue("test"); 

आप का उपयोग Event रजिस्टर कर सकते हैं:

var myEventHandler= 
      new AutomationEventHandler(handler); 

Automation.AddAutomationEventHandler(
    SelectionItemPattern.ElementSelectedEvent, // In your case you might want to use another pattern 
    targetApp, 
    TreeScope.Descendants, 
    myEventHandler); 

और handler विधि:

private void handler(object src, AutomationEventArgs e) {...} 

वहाँ भी (इस मामले में उपयोग Automation.AddAutomationPropertyChangedEventHandler(...)) एक AutomationPropertyChangedEventHandler है यह उपयोगी हो सकता है।

एमएसडीएन से इस sample के आधार पर।

संबंधित मुद्दे