2011-04-19 21 views
22

मेरे पास प्रोजेक्ट में फॉर्म 1 और फॉर्म 2 है। फॉर्म 2 फॉर्म 1 के लिए सेटिंग्स के साथ सिर्फ एक रूप है। फॉर्म 1 से फॉर्म 2 खोलने का आदेश क्या है और कृपया इसे बंद करने का आदेश क्या है?दूसरा फॉर्म कैसे खोलें?

उत्तर

37

आपको उपयोगकर्ता इंटरैक्शन के परिणामस्वरूप फॉर्म 1 पर ईवेंट को संभालने की आवश्यकता है। Show method को,

private void settingsButton_Click(Object sender, EventArgs e) 
{ 
    // Create a new instance of the Form2 class 
    Form2 settingsForm = new Form2(); 

    // Show the settings form 
    settingsForm.Show(); 
} 

इसके अलावा आप: उदाहरण के लिए, यदि आप एक "सेटिंग" बटन है कि उपयोगकर्ता क्लिक आदेश सेटिंग प्रपत्र (Form2) दिखाने के लिए, आप Click घटना है कि बटन के लिए संभाल चाहिए ShowDialog method का उपयोग करना भी चुन सकता है। अंतर यह है कि उत्तरार्द्ध फॉर्म को मोडल संवाद के रूप में दिखाता है, जिसका अर्थ है कि उपयोगकर्ता आपके आवेदन में अन्य रूपों के साथ बातचीत नहीं कर सकता है जब तक कि वे मोडल फॉर्म बंद न करें। यह वैसे ही है कि एक संदेश बॉक्स काम करता है। ShowDialog विधि एक मान भी देता है जो दर्शाता है कि फ़ॉर्म कैसे बंद था।


उपयोगकर्ता सेटिंग्स प्रपत्र बंद हो जाने पर (उदाहरण के लिए, "एक्स" शीर्षक पट्टी में क्लिक करके), विंडोज स्वचालित रूप से इसे बंद करने का ख्याल रखना होगा।

आप इसे अपने आप को बंद करने के लिए इससे पहले कि उपयोगकर्ता इसे बंद करने के लिए कहता चाहते हैं, आप कॉल कर सकते हैं फार्म का Close method:

this.Close(); 
+0

मैंने देखा सभी अन्य उत्तरों में एक त्रुटि लौटा !! बस आपका जवाब यहाँ काम किया। धन्यवाद <3 –

2

किसी भी क्लिक करें घटना (या अन्य एक) पर:

Form2 frm2 = new Form2(); 
frm2.Show(); 
1

आप एक modal dialog रूप Form2 दिखाने के लिए, Form1 के भीतर से की जरूरत है कार्य करें:

var form2 = new Form2(); 
if (form2.ShowDialog() == DialogResult.OK) 
{ 
    // process results here 
} 

एक मॉडल संवाद करते हुए ध्यान केंद्रित रख सकेंगे यह खुला है; यह पैरेंट विंडो (Form1) "पृष्ठभूमि में" सेट करेगा जब तक कि यह बंद न हो, जो सेटिंग विंडो के लिए काफी आम प्रथा है।

4

मैं अपने विंडोज़ रूपों के बारे में बात मान:

प्रदर्शित करने के लिए अपने फार्म का उपयोग दिखाएँ() विधि:

Form form2 = new Form(); 
form2.Show(); 

प्रपत्र उपयोग बंद बंद करने के लिए():

form2.Close(); 
+0

ठीक है धन्यवाद, यह अच्छा काम करता है ... और यदि मैंने int2 की तरह फॉर्म 2 में कुछ सेट किया है .... और मैं फॉर्म 2 बंद करने के बाद मुख्य फॉर्म 1 चाहता हूं, तो मुझे पता है कि आईएनटी में क्या है? – Nasgharet

0

इसके साथ शुरू करें:

var dlg = new Form2(); 
dlg.ShowDialog(); 
7
//To open the form 

Form2 form2 = new Form2(); 

form2.Show(); 
// And to close 
form2.Close(); 

आशा इस मदद करता है

+0

ठीक है धन्यवाद, यह अच्छा काम करता है ... और यदि मैंने int2 जैसे फॉर्म 2 में कुछ सेट किया है .... और मैं फॉर्म 2 को बंद करने के बाद मुख्य फॉर्म 1 चाहता हूं, मुझे पता है कि आईएनटी में क्या है? – Nasgharet

+0

ठीक है क्योंकि आपके पास अपने मुख्य रूप पर फॉर्म 2 का उदाहरण है, इसलिए आपके पास उस int मान तक पहुंचने के लिए हमेशा एक संपत्ति हो सकती है। फ़ॉर्म को बंद करने से पहले सुनिश्चित करें कि आप उस int मान को स्टोर करते हैं :) – cush

5

आप रीति से Form2 खोलने के लिए (अर्थात आपका Form1 पर क्लिक नहीं कर सकते हैं, जबकि Form2 खुला है) चाहते हैं, आप ऐसा कर सकते हैं:

using (Form2 f2 = new Form2()) 
{ 
    f2.ShowDialog(this); 
} 

आप तो फॉर्म 2 को गैर-मोडल खोलना चाहते हैं (जिसका अर्थ है कि आप फॉर्म 2 पर अभी भी फॉर्म 1 पर क्लिक कर सकते हैं), आप फॉर्म 2 के लिए फॉर्म-लेवल संदर्भ बना सकते हैं:

private Form2 _f2; 

public void openForm2() 
{ 
    _f2 = new Form2(); 
    _f2.Show(this); // the "this" is important, as this will keep Form2 open above 
        // Form1. 
} 

public void closeForm2() 
{ 
    _f2.Close(); 
    _f2.Dispose(); 
} 
2

एक पंक्ति में यह होगा:

(new Form2()).Show(); 

आशा है कि यह मदद करता है।

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