2010-10-19 13 views
5

मेरे पास एक टैब नियंत्रण है, और कुछ टैब आइटम हैं। मैं सफलतापूर्वक SelectionChanged ईवेंट सुन रहा हूं, और जांच कर रहा हूं कि जिस टैब में मुझे रूचि है, वह वर्तमान में चयनित है।चयन पर WPF TabControlChanged, एक टेक्स्ट फ़ील्ड पर ध्यान केंद्रित करें

मैं इस कोड का उपयोग कर रहा हूं (नीचे), और डीबगर के माध्यम से कदम, मैं देख सकता हूं कि मेरा ब्रांचिंग तर्क डिजाइन के रूप में काम करता है; हालांकि, मेरे पास यह मुद्दा है कि इस कॉल को txt.Focus() पर ओवरराइड कर रहा है क्योंकि सही टैब आइटम प्रदर्शित होने के बाद, फोकस टेक्स्ट बॉक्स पर नहीं है।

private void tabMain_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    // exact same behavior with and without this line 
    e.Handled = true; 

    if (e.AddedItems.Contains(usrTab)) 
    { 
     txtusr.Focus(); 
    } 
    else if (e.AddedItems.Contains(svcTab)) 
    { 
     txtsvc.Focus(); 
    } 
} 

मैं सिर्फ एक बटन ईवेंट हैंडलर में txtusr.Focus() डालें, तो वह वास्तव में केंद्रित है के रूप में मैं उम्मीद थी।

मुझे संदेह है कि इसे .Focus() विधि के समय लोड होने पर टैबिटम सामग्री के साथ ऐसा करना है, लेकिन मुझे यकीन नहीं है कि इसे ठीक करने के बारे में कैसे जाना है।

+0

क्या आपने अपने कोड के बाहरी समस्या को अलग करने के लिए यह देखने के लिए अलग किया है कि यह पुनरुत्पादित है या नहीं? यदि ऐसा है, तो यह एक समय/ढांचा मुद्दा है और फिर आप इस ज्ञान के साथ समस्या को थोड़ा अलग तरीके से देख सकते हैं। –

+0

मैं इसे स्टब-प्रोग्राम में असंगत रूप से पुन: उत्पन्न करने में सक्षम था। – Nate

उत्तर

10

एक प्रेषक के अंदर फोकस() कॉल डालने का प्रयास करें। BginginInvoke।

Dispatcher.BeginInvoke(new Action(() => { txtsvc.Focus(); })); 
+0

मुझे थ्रेडिंग अपवाद नहीं मिला था, लेकिन इसने इस मुद्दे को ठीक कर दिया है। धन्यवाद। – Nate

+2

याहू, इस मामले में यह वास्तव में धागे के बारे में नहीं है। कुछ नियंत्रण आंतरिक रूप से Dispatcher.Invoke/BeginInvoke का उपयोग करते हैं। डिस्पैचर कतार के अंत में अपना कार्य जोड़कर, आप इसे पूरा करने से पहले सबकुछ अनुमति देते हैं (जब तक आपका कार्य अन्य सभी की तुलना में बराबर या कम प्राथमिकता का हो)। यह मेरी समझ कम से कम है। – mdm20

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