我试图了解静态属性和公共属性之间的区别。但是当我尝试以其他形式访问我的公共财产“测试”时,它显示为“空”。
继承人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 中 'Test' 的值,我在这一行设置了一个断点:
label1.Text = frm1.Test;
但该值为“空”。
请帮助我如何访问其他表单的公共属性。
顺便说一句,我试图让这个公共财产成为“公共静态”。我可以使用这个来访问它:
Form1.Test
但我注意到我可以从我不想发生的 Form2 中更改“测试”值。这就是为什么我试图使用公共财产但没有运气的原因。有人可以澄清我这些事情。感谢您的所有帮助!
EDIT: (For follow up question)
John Koerner 爵士的回答是对我问题的最佳回答。但我有一个后续问题,我试图将这些“测试”属性设为“静态”,我注意到即使我将此属性设为静态或公共属性,它仍然可以在 Form2 中编辑。为了让自己清楚,这里有一个示例:
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 中再次中断以检查“Test”的值,它被更改了!如何将 Form1 中的公共属性设置为在 Form2 中只读且无法编辑?请向我澄清。非常感谢你们!