2011-11-19 16 views
6

मेरे पास एक प्रणाली है जिसमें मुख्य रूप मेनू है, और यह लोड होने पर लॉगिन फॉर्म पॉप अप करता है। मूल रूप से यह मेनू के नीचे लॉगिन फॉर्म लोड करता है, इसलिए मैंने इसे सामने आने के लिए यह .topmost = true का उपयोग किया। (जैसा कि सामने लाया गया था और वापस भेजना काम नहीं किया था)लॉगिन फॉर्म सही ढंग से ध्यान नहीं दे रहा है

हालांकि, यदि उपयोगकर्ता कुछ और क्लिक करता है तो क्रोम कहें, फिर भी यह शीर्षतम परिभाषा के अनुसार, ज़ेड-ऑर्डर के शीर्ष पर रहता है।

मैंने निष्क्रिय करने की घटना का उपयोग करने की कोशिश की, लेकिन इसका मतलब यह था कि लोड पर यह एक बार फिर मेनू फॉर्म के पीछे आता है।

मैं इसे अपने मेनू फॉर्म के पीछे लोड करने से कैसे रोक सकता हूं, और फिर भी जब यह फोकस खो देता है तो इसे सबसे ऊपर से रोक दिया जाता है?

private void login_Deactivate(object sender, EventArgs e) 
{ 
    // do not want it to remain top most when the application is not in focus. 
    this.TopMost = false; 
} 

मेनू रूप में:

private void Menu_Load(object sender, EventArgs e) 
{ 
    openLogin() 
} 

private void openLogin() 
{ 
    Cursor.Current = Cursors.WaitCursor; 
    login theForm = new login(this);    
    this.Enabled = false;    
    theForm.Show(); 
    Cursor.Current = Cursors.Default; 
    theForm.Activate(); 
    theForm.TopMost = true; // Make the login form display over the Menu  
}   

उत्तर

2

को theForm.Show() बदलते मेनू फार्म के लिए लॉग इन के फॉर्म Owner संपत्ति सेट करने का प्रयास करने की कोशिश है।

MSDN ऊपर दी गई लिंक से:

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

का उपयोग करें।

+0

बहुत बहुत धन्यवाद, तुरंत काम किया! चीयर्स –

+0

सहायता की खुशी है। –

0

इस मान लिया जाये कि एक जीत फॉर्म्स आवेदन, तो theForm.ShowModal()

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