Sto cercando di capire qual è la differenza tra proprietà statiche e proprietà pubbliche. Ma quando ho provato ad accedere alla mia proprietà pubblica "Test" in altro formato, dice "null".C# winform: accesso alle proprietà pubbliche da altre forme e differenze tra proprietà statiche e pubbliche
Heres 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();
}
}
Ecco Form2:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
Form1 frm1 = new Form1();
label1.Text = frm1.Test;
}
}
per controllare il valore di 'Test' in Form1, ho messo un punto di interruzione a questa linea:
label1.Text = frm1.Test;
Ma il valore è 'null'.
Please help me come posso accedere alle proprietà pubbliche ad altre forme.
E BTW ho cercato di rendere questa proprietà pubblica "statica". Posso accedere a questo usando questo:
Form1.Test
ma ho notato che posso cambiare il valore 'Test' da Form2, che io non voglio che accada. Ecco perché sto cercando di usare la proprietà pubblica ma senza fortuna. Qualcuno può chiarirmi queste cose. Grazie per tutto il tuo aiuto ragazzi!
EDIT: (For follow up question)
La risposta di Sir John Koerner è la migliore risposta per la mia domanda. Ma ho una domanda di follow-up, ho provato a rendere queste proprietà 'test' come 'statiche', e ho notato che anche se faccio di questa proprietà una proprietà statica o pubblica, può comunque essere modificata in Form2. Per farmi capire, ecco un esempio:
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();
}
}
Dopo Form2 chiuso, ho cercato di rompere di nuovo in Form1_Load per controllare il valore di 'Test', ed è stato cambiato! Come posso rendere una proprietà pubblica in Form1 da leggere solo in Form2 e non può essere editato? Per favore, chiariscimi. Grazie mille ragazzi!
Grazie per questo uomo, vedi la mia modifica per la mia domanda di follow-up, spero di aver chiarito la mia domanda. – jomsk1e
@ JRC vedi la mia modifica. –
questo è tutto! grazie per il tuo aiuto Giovanni! Bella lezione da parte tua! Scusa per essere un principiante :( – jomsk1e