2009-09-21 11 views
17

मैंने एक साधारण MSN-स्टाइल प्रोग्राम लिखा है जो WCF का उपयोग करके संदेश भेज और पुनर्प्राप्त करेगा। भेजे जाने वाले संदेश में टाइप करने के लिए मुख्य रूप में एक टेक्स्टबॉक्स होता है। पृष्ठभूमि में एप्लिकेशन नए संदेशों के लिए प्रत्येक कुछ सेकंड सर्वर को मतदान करता है। जब एक नया संदेश प्राप्त होता है तो इसे प्रदर्शित करने के लिए एक नई विंडो खोली जाती है। इसे डिस्पैचर क्लास का उपयोग करके यूआई थ्रेड पर किया जाना है।फोकस चोरी करने से एक नए डब्ल्यूपीएफ फॉर्म को कैसे रोकें?

समस्या यह है कि जब नई विंडो दिखाई जाती है, तो फोकस टेक्स्टबॉक्स से दूर हो जाता है, ताकि टाइपिंग बाधित हो। यह बहुत परेशान है! MSN Messenger में एक प्राप्त करते समय अपना संदेश लिखना जारी रखना संभव है। यह कैसे किया जाता है?

वर्कअराउंड के रूप में मैंने टेक्स्टबॉक्स पर ध्यान केंद्रित करते हुए नए संदेश के साथ पॉपअप स्थगित कर दिया, लेकिन एक बेहतर तरीका होना चाहिए!

+1

वहाँ के बिना यह ध्यान केंद्रित किया जा रहा एक नई विंडो खोलने के लिए एक रास्ता है? –

उत्तर

46

उत्तर सरल है: चूंकि .NET 3.5 SP1 WPF रूपों में ShowActivated संपत्ति है। इसे गलत पर सेट करें और इस प्रकार चिह्नित किसी भी रूप में कोई फोकस नहीं चुराएगा!

+8

एक डब्ल्यूपीएफ फॉर्म? वह क्या है? –

-2

आप विंडो की फोकस करने योग्य संपत्ति को गलत पर सेट कर सकते हैं।

+1

इस मामले में नहीं। उपयोगकर्ता – Dabblernl

-1

मेरे आवेदन में मुझे अन्य सभी विंडोज़ के शीर्ष पर एक अधिसूचना विंडो दिखाना होगा जबकि मेरा मेनविंडो कम हो गया है, लेकिन फोकस चोरी किए बिना।

तो मैं सिर्फ इस कार्य करें:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    this.Topmost = true; 
    this.Topmost = false; 
} 
+1

फ़ॉर्म के साथ संवाद करने में सक्षम होना चाहिए क्योंकि खिड़की पहले से सक्रिय और दिखाए जाने के बाद लोड की गई घटना आग लगती है, अगर फोकस चोरी करने से यह नहीं रुकता है। – Wobbles

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

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