मैं समझने की कोशिश कर रहा हूं कि स्थिर और सार्वजनिक गुणों के बीच क्या अंतर है। लेकिन जब मैंने अपनी सार्वजनिक संपत्ति 'टेस्ट' को दूसरे रूप में एक्सेस करने का प्रयास किया तो यह 'शून्य' कहता है।सी # विनफॉर्म: स्थिर और सार्वजनिक गुणों के बीच अन्य रूपों और अंतर से सार्वजनिक गुणों तक पहुंच
यहाँ Form1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string _test;
public string Test
{
get { return _test; }
set { _test = value; }
}
private void Form1_Load(object sender, EventArgs e)
{
_test = "This is a test";
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
}
}
यहाँ Form2 है:
label1.Text = frm1.Test;
:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
label1.Text = frm1.Test;
}
}
Form1 में 'टेस्ट' के मान की जाँच करने के लिए, मैं इस लाइन के लिए एक ब्रेकपाइंट डाल लेकिन मूल्य 'शून्य' है।
कृपया मेरी सहायता करें कि मैं अन्य रूपों में सार्वजनिक संपत्तियों का उपयोग कैसे कर सकता हूं।
और बीटीडब्ल्यू मैंने इस सार्वजनिक संपत्ति को 'सार्वजनिक स्थैतिक' बनाने की कोशिश की। मैं इसका उपयोग कर इस तक पहुंच सकता हूं:
Form1.Test
लेकिन मैंने देखा कि मैं फॉर्म 2 से 'टेस्ट' मान बदल सकता हूं जो मैं नहीं करना चाहता हूं। यही कारण है कि मैं सार्वजनिक संपत्ति का उपयोग करने की कोशिश कर रहा हूं लेकिन बिना किसी किस्मत के। क्या कोई मुझे इन चीजों को स्पष्ट कर सकता है। मदद के लिए आप सभी का धन्यवाद!
EDIT: (For follow up question)
सर जॉन कोर्नर का जवाब मेरे प्रश्न का सबसे अच्छा जवाब है। लेकिन मेरे पास एक फॉलो अप प्रश्न है, मैंने इन 'टेस्ट' गुणों को 'स्थैतिक' बनाने की कोशिश की, और मैंने देखा कि अगर मैं इस संपत्ति को स्थिर या सार्वजनिक संपत्ति बना देता हूं, तो भी इसे फॉर्म 2 में संपादित किया जा सकता है। अपने आप को यहाँ स्पष्ट करना एक नमूना है:
public partial class Form2 : Form
{
private Form1 f1;
public Form2(Form1 ParentForm)
{
InitializeComponent();
f1 = ParentForm;
}
private void Form2_Load(object sender, EventArgs e)
{
label1.Text = f1.Test;
}
private void button1_Click(object sender, EventArgs e)
{
f1.Test = "This test has been changed!";
this.Close();
}
}
बाद Form2 बंद कर दिया, मैं Form1_Load में फिर से तोड़ने के लिए 'टेस्ट' के मान की जाँच करने की कोशिश की, और यह बदल गया था! फॉर्म 2 में केवल पढ़ने के लिए फॉर्म 1 में सार्वजनिक संपत्ति कैसे बना सकती है और इसे संपादित नहीं किया जा सकता है? कृपया मुझे स्पष्टीकरण दें। बहुत बहुत धन्यवाद दोस्तों!
इस आदमी के लिए धन्यवाद, कृपया मेरे अनुवर्ती प्रश्न के लिए मेरा संपादन देखें, मुझे उम्मीद है कि मैंने अपना प्रश्न स्पष्ट कर दिया है। – jomsk1e
@ जेआरसी मेरा संपादन देखें। –
यह है! आपकी मदद जॉन के लिए धन्यवाद! आप से अच्छा सबक! नौसिखिया होने के लिए खेद है :( – jomsk1e