नवीनतम लेख
घर / इंटरनेट / दो आकृतियों को लिंक करें c. फॉर्म जोड़ना। रूपों के बीच बातचीत। सिंगल आइटम फॉर्म या विवरण फॉर्म बनाएं

दो आकृतियों को लिंक करें c. फॉर्म जोड़ना। रूपों के बीच बातचीत। सिंगल आइटम फॉर्म या विवरण फॉर्म बनाएं

आखिरी अपडेट: 31.10.2015

प्रोजेक्ट में एक और फॉर्म जोड़ने के लिए, सॉल्यूशन एक्सप्लोरर विंडो में प्रोजेक्ट के नाम पर राइट-क्लिक करें और ऐड (जोड़ें) -> विंडोज फॉर्म ... का चयन करें।

चलो हम देते है नए रूप मेकुछ नाम, उदाहरण के लिए, फॉर्म2.सीएस:

इसलिए, हमने प्रोजेक्ट में दूसरा फॉर्म जोड़ा है। अब आइए दो रूपों के बीच बातचीत को लागू करने का प्रयास करें। मान लें कि बटन क्लिक होने पर पहला फॉर्म दूसरे फॉर्म को कॉल करेगा। सबसे पहले, पहले फॉर्म फॉर्म1 में एक बटन जोड़ते हैं और कोड फाइल पर जाने के लिए बटन पर डबल-क्लिक करते हैं। तो, हम बटन क्लिक इवेंट हैंडलर में जाएंगे, जो कि बटन को डबल-क्लिक करने के बाद डिफ़ॉल्ट रूप से बनाया जाता है:

निजी शून्य बटन 1_क्लिक (ऑब्जेक्ट प्रेषक, EventArgs e) ( )

अब इसमें दूसरे फॉर्म का कॉल कोड ऐड करते हैं। हमारे दूसरे फॉर्म को फॉर्म 2 कहा जाता है, इसलिए पहले हम इस क्लास का ऑब्जेक्ट बनाते हैं, और फिर हम इसे स्क्रीन पर प्रदर्शित करने के लिए शो मेथड को कॉल करते हैं:

निजी शून्य बटन 1_क्लिक (ऑब्जेक्ट प्रेषक, EventArgs ई) (फॉर्म 2 न्यूफॉर्म = नया फॉर्म 2 (); नयाफॉर्म। शो ();)

अब इसके विपरीत करते हैं - ताकि दूसरा रूप पहले को प्रभावित करे। जबकि दूसरा रूप पहले के अस्तित्व के बारे में नहीं जानता। इसे ठीक करने के लिए, आपको किसी तरह पहले फॉर्म की जानकारी को दूसरे फॉर्म में ट्रांसफर करना होगा। ऐसा करने के लिए, हम कंस्ट्रक्टर में फॉर्म के लिंक को पास करने का उपयोग करेंगे।

तो चलिए दूसरे फॉर्म पर चलते हैं और इसके कोड पर चलते हैं - फॉर्म पर राइट-क्लिक करें और व्यू कोड (कोड देखें) चुनें। जबकि यह खाली है और इसमें केवल एक कंस्ट्रक्टर है। चूंकि C# मेथड ओवरलोडिंग का समर्थन करता है, इसलिए हम विभिन्न मापदंडों के साथ कई मेथड और कंस्ट्रक्टर बना सकते हैं और स्थिति के आधार पर उनमें से एक को कॉल कर सकते हैं। तो, चलिए दूसरे फॉर्म की कोड फाइल को निम्नलिखित में बदलते हैं:

सिस्टम का उपयोग करना; System.Collections.Generic का उपयोग करना; System.ComponentModel का उपयोग करना; System.Data का उपयोग करना; System.Drawing का उपयोग करना; System.Linq का उपयोग करना; System.Text का उपयोग करना; System.Threading.Tasks का उपयोग करना; System.Windows.Forms का उपयोग करना; नेमस्पेस हैलोएप (सार्वजनिक आंशिक वर्ग फॉर्म 2: फॉर्म (सार्वजनिक फॉर्म 2 () (इनिशियलाइज कॉम्पोनेंट ();)) सार्वजनिक फॉर्म 2 (फॉर्म 1 एफ) (इनिशियलाइज कॉम्पोनेंट (); एफ। बैककोलर = कलर।

वास्तव में, हमने अभी यहां जोड़ा है नया निर्माता public Form2(Form1 f) , जहां हम पहला फॉर्म प्राप्त करते हैं और इसकी पृष्ठभूमि को पीले रंग में सेट करते हैं। अब पहले फॉर्म के कोड पर चलते हैं, जहां हम दूसरे फॉर्म को कॉल करते हैं और इसे निम्नलिखित में बदलते हैं:

निजी शून्य बटन 1_क्लिक (ऑब्जेक्ट प्रेषक, EventArgs ई) (फॉर्म 2 नया फॉर्म = नया फॉर्म 2 (यह); नयाफॉर्म। दिखाएँ ();)

क्योंकि ये मामलायह कीवर्ड वर्तमान ऑब्जेक्ट के संदर्भ का प्रतिनिधित्व करता है - फॉर्म 1 ऑब्जेक्ट, फिर दूसरा फॉर्म बनाते समय, यह इसे (लिंक) प्राप्त करेगा और इसके माध्यम से पहले फॉर्म का प्रबंधन करेगा।

अब, बटन पर क्लिक करने के बाद, हम एक दूसरा फॉर्म बनाएंगे, जो तुरंत पहले फॉर्म का रंग बदल देगा।

हम वर्तमान स्वरूप के लिए ऑब्जेक्ट भी बना सकते हैं:

निजी शून्य बटन1_क्लिक (ऑब्जेक्ट प्रेषक, EventArgs e) (फॉर्म1 newForm1 = new Form1(); newForm1.Show(); Form2 newForm2 = new Form2(newForm1); newForm2.Show(); )

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

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

टिप्पणियाँ:

फॉर्म बनाएं

ज्यादातर मामलों में, दानेदार विन्यास में दो रूप एक ही टेबल या क्वेरी पर आधारित होते हैं। यदि आपके पास पहले से ही कुछ फॉर्म हैं जिनका आपको उपयोग करने की आवश्यकता है (एक टेबल या मल्टी-आइटम फॉर्म है और दूसरा सिंगल आइटम या विवरण फॉर्म है), तो आप इस सेक्शन को छोड़ सकते हैं। अन्यथा, उन्हें बनाने के लिए निम्नलिखित प्रक्रियाओं का उपयोग करें।

एकाधिक तत्वों के साथ एक टेबल फॉर्म या फॉर्म बनाएं

    नेविगेशन फलक में, उस तालिका या क्वेरी का चयन करें जिसमें वह डेटा है जिसे आप सारणीबद्ध रूप में प्रदर्शित करना चाहते हैं।

    वस्तुएं चुनें सृष्टि > अन्य रूप, और फिर - एकाधिक तत्वया मेजवांछित प्रपत्र प्रकार के आधार पर।

    फ़ॉर्म को सहेजें और बंद करें।

बहु-आइटम प्रपत्रों के बारे में अधिक जानकारी के लिए, एकाधिक आइटम उपकरण का उपयोग करके प्रपत्र बनाएँ देखें।

सिंगल आइटम फॉर्म या विवरण फॉर्म बनाएं

    नेविगेशन फलक में, उस तालिका या क्वेरी पर क्लिक करें जिसमें वह डेटा है जिसे आप विवरण प्रपत्र में प्रदर्शित करना चाहते हैं। यह संभवतः वही तालिका या क्वेरी होगी जिसका उपयोग आपने पहले फॉर्म के लिए किया था।

    वस्तुएं चुनें सृष्टि > फार्म.

    आवश्यक परिवर्तन करें, प्रपत्र को सहेजें और बंद करें।

अधिक जानकारी के लिए, आकृति उपकरण के साथ प्रपत्र बनाएँ देखें।

विवरण प्रपत्र खोलने के लिए तर्क जोड़ना

अब देखते हैं कि एक मल्टी-आइटम या टेबल फॉर्म में एक छोटा मैक्रो कैसे जोड़ा जाए जो विवरण फॉर्म को खोलेगा और सही आइटम प्रदर्शित करेगा।

यदि आपके पास मैक्रोज़ के साथ अधिक अनुभव नहीं है, तो चिंता न करें। आप इस आलेख में प्रक्रिया से एक्सएमएल को कॉपी और पेस्ट कर सकते हैं।

    यदि आप किसी तालिका प्रपत्र का उपयोग कर रहे हैं, तो उसे खोलने के लिए नेविगेशन फलक में उस पर डबल-क्लिक करें। बहु-आइटम प्रपत्र के लिए, नेविगेशन फलक में राइट-क्लिक करें और चुनें लेआउट मोड.

    गुण विंडो खोलने के लिए F4 कुंजी दबाएं यदि यह पहले से खुली नहीं है।

    उस कॉलम पर क्लिक करें जहां आप मैक्रो जोड़ना चाहते हैं। यह वह कॉलम होना चाहिए जिस पर क्लिक करने पर मैक्रो चलाने के बाद विवरण फॉर्म खुल जाएगा। ऊपर की छवि में, मैक्रो को frmContactList कॉलम में जोड़ा गया है।

सलाह:(टिप) आप एक से अधिक कॉलम में मैक्रोज़ जोड़ सकते हैं।

कंप्यूटर डेटाबेस में मैक्रोज़ के बारे में अधिक जानकारी के लिए देखें


यह स्पष्ट है कि यदि आप टाइप पॉइंटर बनाते हैं<что там>:: फॉर्म काम करेगा, लेकिन मुझे पहले से बनाए गए फॉर्म की जरूरत है, बटन आदि के साथ। (सामान्य तौर पर, अलग-अलग नियंत्रण), लेकिन मैन्युअल रूप से (अर्थात प्रोग्रामेटिक रूप से) मैं उन्हें एक साफ फॉर्म (बहुत सारी स्क्रिबलिंग और इस तथ्य से नहीं कि आप इसे सही पाते हैं) पर लिखना नहीं चाहते हैं। यह वही है जो मुझे अभी भी भ्रमित करता है ....... जब मैंने पहले से बनाए गए प्रोजेक्ट में फॉर्म जोड़ा, तो नई हेडर फ़ाइल फॉर्म 2 एच में इसे इस तरह लिखा गया था:

#प्रगमा एक बार
#शामिल "फॉर्म1.एच"

नेमस्पेस सिस्टम का उपयोग करना;



नेमस्पेस सिस्टम :: डेटा का उपयोग करना;

नेमस्पेस My1(

///
/// फॉर्म 2 के लिए सारांश



पब्लिक रेफरी क्लास फॉर्म 2: पब्लिक सिस्टम :: विंडोज :: फॉर्म :: फॉर्म
{
जनता:
फॉर्म 2 (शून्य)
{
प्रारंभिक कॉम्पोनेंट ();

}

संरक्षित:

~ फॉर्म 2 ()
{
अगर (घटक)
{
घटकों को हटा दें;
}
}

निजी:



///
{
यह-> घटक = gcnew सिस्टम :: घटक मॉडल :: कंटेनर ();
यह-> आकार = सिस्टम :: ड्राइंग :: आकार (300,300);
यह-> टेक्स्ट = एल "फॉर्म 2";
यह-> पैडिंग = सिस्टम :: विंडोज़ :: फॉर्म :: पैडिंग (0);
यह->
}
#pragmaendregion
};
}

हालांकि Form1.h में इसे इस तरह लिखा गया है:

#प्रगमा एक बार
#शामिल "फॉर्म2.एच"

नेमस्पेस My1(

नेमस्पेस सिस्टम का उपयोग करना;
नेमस्पेस सिस्टम :: कंपोनेंट मॉडल का उपयोग करना;
नेमस्पेस सिस्टम :: संग्रह का उपयोग करना;
नेमस्पेस सिस्टम :: विंडोज :: फॉर्म का उपयोग करना;
नेमस्पेस सिस्टम :: डेटा का उपयोग करना;
नेमस्पेस सिस्टम :: ड्रॉइंग का उपयोग करना;

///
/// फॉर्म 1 के लिए सारांश
/// चेतावनी: यदि आप इस वर्ग का नाम बदलते हैं, तो आपको इसे बदलना होगा
/// प्रबंधित संसाधन संकलक उपकरण के लिए "संसाधन फ़ाइल नाम" संपत्ति
/// सभी .resx फाइलों से जुड़ा यह वर्ग इस पर निर्भर करता है। अन्यथा,
/// डिजाइनर स्थानीयकृत के साथ ठीक से बातचीत नहीं कर पाएंगे
/// इस फॉर्म से जुड़े संसाधन।
पब्लिक रेफरी क्लास फॉर्म 1: पब्लिक सिस्टम :: विंडोज :: फॉर्म :: फॉर्म
{
जनता:
फॉर्म 1 (शून्य)
{
प्रारंभिक कॉम्पोनेंट ();
// TODO: यहां कंस्ट्रक्टर कोड जोड़ें
}

संरक्षित:
/// इस्तेमाल किये जाने वाले संसाधनों को साफ़ रखें।
~ फॉर्म1 ()
{
अगर (घटक)
{
घटकों को हटा दें;
}
}
निजी: सिस्टम :: विंडोज :: फॉर्म :: बटन ^ बटन 1;
संरक्षित:

निजी:
/// आवश्यक डिजाइनर चर।
सिस्टम::कंपोनेंटमॉडल::कंटेनर ^घटक;

#pragma क्षेत्र विंडोज फॉर्म डिजाइनर जेनरेट कोड
/// डिज़ाइनर समर्थन के लिए आवश्यक विधि - संशोधित न करें
/// कोड संपादक के साथ इस विधि की सामग्री।
शून्य प्रारंभिक कॉम्पोनेंट (शून्य)
{
यह-> बटन 1 = (जीसीन्यू सिस्टम :: विंडोज :: फॉर्म :: बटन ());
यह-> सस्पेंडलेआउट ();
// बटन1
यह-> बटन 1-> स्थान = सिस्टम :: ड्राइंग :: प्वाइंट (60, 76);
यह-> बटन 1-> नाम = एल "बटन 1";
यह-> बटन 1-> आकार = सिस्टम :: ड्राइंग :: आकार (75, 23);
यह-> बटन 1-> टैबइंडेक्स = 0;
यह-> बटन 1-> टेक्स्ट = एल "बटन 1";
this->button1->UseVisualStyleBackColor = true;
this->button1->+= gcnew System::EventHandler(this, &Form1::button1_Click) पर क्लिक करें;
// फॉर्म 1
यह-> AutoScaleDimensions = System::Drawing::SizeF(6, 13);
यह-> AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
यह-> क्लाइंटसाइज = सिस्टम :: ड्राइंग :: आकार (292, 266);
यह-> नियंत्रण-> जोड़ें (यह-> बटन 1);
यह-> नाम = एल "फॉर्म 1";
यह-> टेक्स्ट = एल "फॉर्म 1";
यह-> रिज्यूमेलेआउट (झूठा);

}
#pragmaendregion

स्टेटिक सिस्टम :: विंडोज :: फॉर्म :: फॉर्म ^ एफआरएम = जीसीन्यू सिस्टम :: विंडोज :: फॉर्म :: फॉर्म ();
निजी: सिस्टम :: शून्य बटन 1_क्लिक (सिस्टम :: ऑब्जेक्ट ^ प्रेषक, सिस्टम :: EventArgs ^ ई) (
एफआरएम-> दिखाएँ ();
}
};
}

अलग-अलग जगहों पर नेमस्पेस का कनेक्शन विनियमित है!