我想了解最新的静态和公共属性之间的区别。 但是,当我试图访问其他形式我的公共财产“测试”它说,“空”。
继承人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();
}
}
这里的窗体2:
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的“测试”的值,我把一个断点这一行:
label1.Text = frm1.Test;
但值是“空”。
请帮我,我怎么能访问公共属性,以其他形式。
和BTW我试图让这公共财产是一个公共静态“。 我可以用这个访问此:
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();
}
}
窗体2关闭后,我试图在Form1_Load的再次突破,以检查“测试”的价值,它被改变! 我怎样才能让在Form1中的公共属性为readOnly在窗口2并不能editted? 请澄清我。 非常感谢你们!