以不同的形式使用相同的元素
本文关键字:元素 | 更新日期: 2023-09-27 18:27:26
我正在做一个注册系统。在这个系统中,我使用模态,当用户单击按钮时显示的另一种形式
要显示表单,我使用:
private void btnShowModal_Click(object sender, EventArgs e)
{
AddUserForm form = new AddUserForm();
form.Show();
}
这对显示表单非常有效。现在这是我的问题:如果我在这个表单中创建一个标签,并试图在主表单中使用它作为参考,我会得到一个错误,即它在上下文中不存在。例如,我在AddUserForm中创建了label1。现在我将尝试在Form1中使用相同的标签来更改文本:
label1.Text = "I was created in AddUserForm and now I'm at Form1!";
但这不起作用,我得到错误:
The name 'label1' does not exist in the current context.
如何同时使用两种形式的元素?我需要添加一个参考?怎样提前感谢大家!
创建创建标签的基本表单。然后,每个表单都可以从基本表单继承并以这种方式共享。
public class BaseForm : Form
{
//define label
}
public AddUserForm : BaseForm
{
}
在AddUserForm中,创建以下属性:
public string LabelText
{
get { return label1.Text; }
set { label1.Text = value; }
}
然后在Form1中,只需在创建AddUserForm实例后添加此行:
form.LabelText = "I was created in AddUserForm and now I'm at Form1!";
更普遍地说,虽然您可以公开该字段(默认情况下它是私有的),但这样做是个坏主意。通过将表单元素封装在属性中,可以精确地控制外部世界可以更改和不能更改的内容。例如,您可能不希望其他类能够更改标签的大小、位置、字体等。或者你可以这样做,但如果是这样,那么你就可以为那些你想改变的东西添加专门的属性。
我想你可以这样尝试,
Form1.cs
private void btnShowModal_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(ref this.label1);
frm.ShowDialog();
}
Form2.cs
Label labelOne = null;
public Form2()
{
InitializeComponent();
}
public Form2(ref Label lbl)
{
InitializeComponent();
labelOne = lbl;
}
private void Form2_Load(object sender, EventArgs e)
{
labelOne.Text = "A";
}
希望它能解决!