2008-10-10 10 views
14

मैं एक Windows लिख रहा हूँ सी # नेटआवेदन विंडो बंद विभिन्न धागा (सी #) पर अन्य विंडो के पीछे भेजा

स्टार्टअप पर में आवेदन पत्र, आवेदन एक स्प्लैश स्क्रीन जो एक अलग थ्रेड में चल रहा है प्रदर्शित करता है। जबकि स्प्लैश स्क्रीन दिख रही है, मुख्य एप्लिकेशन प्रारंभ हो रहा है।

एक बार मुख्य एप्लिकेशन प्रारंभ होने के बाद, एप्लिकेशन का मुख्य रूप प्रदर्शित होता है, और स्प्लैश स्क्रीन अभी भी शीर्ष पर दिखाई देती है।

अब तक सब कुछ अपेक्षित है।

फिर, स्पलैश स्क्रीन बंद है, जो उस धागे से बाहर निकलने का कारण बनती है। किसी कारण से, बिंदु पर, मुख्य एप्लिकेशन विंडो सभी अन्य खुले विंडोज के पीछे भेज दी जाती है, विशेष रूप से विंडोज एक्सप्लोरर विंडो जहां आपने एप्लिकेशन को पहले स्थान पर चलाने के लिए .exe फ़ाइल पर क्लिक किया था!

विंडोज़ अचानक इस तरह "पीछे" कूदने के कारण क्या हो सकता है?

उत्तर

10

कॉल करने का प्रयास करें। जब आपका धागा बंद हो जाता है तो अपनी मुख्य विंडो पर सक्रिय करें।

यह कभी सक्रिय नहीं हुआ है, और इस प्रकार कम जेड-ऑर्डर है, इसलिए जो भी अधिक हो, वह स्वाभाविक रूप से ऊपर होगा। मुझे अपने ऐप में इस सटीक परिदृश्य को ठीक करना पड़ा।

मत भूलना! आपको Invoke() का उपयोग करके सही धागे पर कॉल को मार्शल करने की आवश्यकता हो सकती है!

1

मैंने कभी-कभी ऐसा भी किया है। बॉब की प्रतिक्रिया सबसे आसान है और अधिकांश मामलों में मेरे लिए काम करती है। हालांकि, कुछ बार ऐसा हुआ है जहां मुझे ब्रूट फोर्स का उपयोग करने की आवश्यकता है। इस तरह इंटरऑप के माध्यम से ऐसा करें:

[डीएलआईएमपोर्ट ("user32.dll")] सार्वजनिक स्थैतिक बाहरी बूल SetForegroundWindow (IntPtr hWnd);

0

क्या स्पलैश स्क्रीन एक मॉडल संवाद है?

यदि आपने DialogResult दोनों को सेट करके और छुपाएं() या बंद() को कॉल करके दो बार मॉडल संवाद को खारिज कर दिया है तो मैंने इस विंडो को 'कूद' देखा है।

कोड इस तरह:

private void button1_Click(object sender, System.EventArgs e) 
{ 
    this.DialogResult = DialogResult.Abort; 
    this.Hide(); 
} 

देखें सभी मामलों के लिए this ब्लॉग प्रविष्टि ...

-2

आप इस तरह कोड का उपयोग कर सकते हैं:

private void button1_Click(object sender, System.EventArgs e) 
{ 
    this.DialogResult = DialogResult.Abort; 
    this.Hide(); 
} 

धन्यवाद सब!

+0

पोस्ट करने के बाद एक वर्ष में किसी के कोड स्निपेट को दोहराना पाठक के लिए सहायक नहीं है। –

+0

विशेष रूप से जब कोड कॉपी/पेस्टिंग कोड का एक उदाहरण है जो समस्या का कारण बनता है। – damian

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