दिलचस्प पोस्ट
PHP में विशाल XML फ़ाइलों को पार्स करना अनुमानित पंक्तियों में phpmyadmin परिणामों में बहुत भिन्न क्यों है? एंड्रॉइड में ग्रिडव्यू में छवि गैलरी कैसे कार्यान्वित करें? लचीलाशोधक, टायर, और नेस्टेड क्वेरीज़ / एक्टिवक्रैकर्ड के साथ संबद्धता जीआईटी बैश मेरे पाथ को नहीं देखती सीएसएस मार्जिन आतंक; मार्जिन मूल तत्व के बाहर स्थान जोड़ता है स्तंभ द्वारा सीएसवी को सॉर्ट करें जब स्रोत स्त्रोत छवि नहीं मिली है तो चुपचाप "छवि नहीं मिली" आइकन को छिपाने के लिए कैसे करें तार्किक ऑपरेटर || जावास्क्रिप्ट में, 0 बूलियन झूठी के लिए खड़ा है? Linq एक्सटेंशन विधियों का उपयोग करते हुए आप बाएं बाहरी सहभागी कैसे करते हैं NHibernate में बैच अपडेट जावास्क्रिप्ट ड्राइंग लाइब्रेरी? एक काल्पनिक क्षेत्र के चारों ओर वस्तु को देखकर SCNCamera नोड को घुमाएं उपयोगकर्ता-निर्दिष्ट रूट निर्देशिका में उप-फ़ोल्डरों और फ़ाइलों के माध्यम से साइकिल सी / सी ++ में WinHTTP के साथ एक फाइल कैसे डाउनलोड करें?

विंडोज फॉर्म के बीच मूल्यों को पास करना सी #

मैं फ़ॉर्म के बीच के मूल्यों को पारित करने का तरीका जानने के लिए संघर्ष कर रहा हूं। मेरे चार रूप हैं और मैं Login द्वारा चौथे और अंतिम रूप में प्राप्त जानकारी को उत्तीर्ण करना चाहता हूं।

अभी तक मेरे पास इतना ही है।

इस फ़ंक्शन में:

 private void btnLogin_Click(object sender, EventArgs e) 

मैंने उस डेटा को deserialized किया है जिसे मैं चाहता हूं:

 NewDataSet resultingMessage = (NewDataSet)serializer.Deserialize(rdr); 

तब, जब मैं अगले फॉर्म पर कॉल करता हूं तो मैंने यह किया है:

 Form myFrm = new frmVoiceOver(resultingMessage); myFrm.Show(); 

फिर, मेरे VoiceOver फॉर्म इस तरह दिखता है:

 public frmVoiceOver(NewDataSet loginData) { InitializeComponent(); } private void btnVoiceOverNo_Click(object sender, EventArgs e) { this.Close(); Form myFrm = new frmClipInformation(); myFrm.Show(); } 

जब मैं डीबग करता हूं, तो मैं देख सकता हूं कि डेटा द्वितीय फॉर्म में loginData इन डाटा में है, लेकिन मुझे लगता है कि इसे btnVoiceOverNo_Click इवेंट में एक्सेस नहीं कर सकता। मैं इसका उपयोग कैसे कर सकता हूं, इसलिए मैं इसे अगले प्रपत्र में पास कर सकता हूं?

Solutions Collecting From Web of "विंडोज फॉर्म के बीच मूल्यों को पास करना सी #"

आपको loginData को स्थानीय वैरिएबल में frmVoiceOver क्लास के अंदर डालने की जरूरत है ताकि इसे अन्य विधियों से प्राप्त कर सकें। वर्तमान में इसे कन्स्ट्रक्टर को स्कॉच किया जाता है:

 class frmVoiceOver : Form { private NewDataSet _loginData; public frmVoiceOver(NewDataSet loginData) { _loginData = loginData; InitializeComponent(); } private void btnVoiceOverNo_Click(object sender, EventArgs e) { // Use _loginData here. this.Close(); Form myFrm = new frmClipInformation(); myFrm.Show(); } } 

इसके अलावा, यदि दो रूप उसी प्रक्रिया में हैं तो आपको डेटा को सीरियललाइज़ करने की आवश्यकता नहीं है और इसे फ़ॉर्म के कन्स्ट्रक्टर के मानक संदर्भ के रूप में बस पास कर सकते हैं।

Google इस क्षेत्र में अधिक समझने के लिए " सी # चर वाले क्षेत्र " की तरह कुछ है क्योंकि आप हर समय अवधारणा का सामना करेंगे। मैं सराह करता हूं कि आप खुद को सिखाया जाता है, इसलिए मैं उसको बढ़ाने की कोशिश कर रहा हूं 🙂

विभिन्न स्थितियों में हमें कुछ रूपों से एक प्रपत्र से दूसरे प्रपत्र तक पास करना पड़ सकता है जब कुछ घटना होती है। यहां आप इस सुविधा को कैसे लागू कर सकते हैं इसका एक सरल उदाहरण है।

मान लें कि आपके पास दो फॉर्म फॉर्म 1 और फॉर्म 2 हैं, जिसमें फॉर्म 2 फार्म 1 का बच्चा है दोनों रूपों के दो टेक्स्ट बॉक्स होते हैं, जब भी फॉर्म 2 के पाठ बॉक्स में टेक्स्ट बदल जाता है, फॉर्म 1 का टेक्स्ट बॉक्स अपडेट हो जाता है।

फॉर्म 1 का कोड निम्नलिखित है

 private void btnShowForm2_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.UpdateTextBox += new EventHandler<TextChangeEventArgs>(txtBox_TextChanged); form2.ShowDialog(); } private void txtBox_TextChanged(object sender, TextChangeEventArgs e) { textBox1.Text = e.prpStrDataToPass; } 

फॉर्म 2 का कोड निम्नलिखित है

 public event EventHandler<TextChangeEventArgs> UpdateTextBox; private string strText; public string prpStrText { get { return strText; } set { if (strText != value) { strText = value; OnTextBoxTextChanged(new TextChangeEventArgs(strText)); } } } private void textBox_Form2_TextChanged(object sender, EventArgs e) { prpStrText = txtBox_Form2.Text; } protected virtual void OnTextBoxTextChanged(TextChangeEventArgs e) { EventHandler<TextChangeEventArgs> eventHandler = UpdateTextBox; if (eventHandler != null) { eventHandler(this, e); } } 

मूल्यों को पारित करने के लिए हमें अपने डेटा को एक वर्ग में संग्रहीत करना चाहिए जो EventArgs से प्राप्त किया गया है

 public class TextChangeEventArgs : EventArgs { private string strDataToPass; public TextChangeEventArgs(string _text) { this.strDataToPass = _text; } public string prpStrDataToPass { get { return strDataToPass; } } } 

अब जब फॉर्म 2 में टेक्स्ट बदलता है, तो उसी टेक्स्ट को फॉर्म 1 के टेक्स्ट बॉक्स में अपडेट किया जाता है।