मैं माइक्रोसॉफ्ट यूआई स्वचालन ढांचे के साथ किसी पाठ फ़ील्ड/पाठ बॉक्स तत्व पर एक पाठ सेट करना चाहते हैं, एक AutomationElement
ControlType.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");
}