1 回答
TA贡献1780条经验 获得超4个赞
我在评论中描述的示例:
执行此操作时:
Phonebook PB = new Phonebook();
创建类(窗体)的新实例:这不是创建窗体和您尝试更新的窗体实例(同一对象)的同一个窗体实例。这是一个不同的对象。
无论您对此新对象进行何种更改,它都不会反映在原始的、现有的对象中。PhoneBookMakeContact
如何解决:
向 MakeContact 窗体添加一个构造函数,该构造函数接受 PhoneBook 类型的参数和以下类型的私有对象:Phonebook
private PhoneBook pBook = null;
public MakeContact() : this(null) { }
public MakeContact(PhoneBook phoneBook)
{
InitializeComponent();
this.pBook = phoneBook;
}
将构造函数中传递的参数分配给相同类型的私有字段。然后,此字段将用于调用该类的 Public 方法(Form 是一个类,其行为类似于其他类)。PhoneBook
这不是唯一可能的方法。您可以在此处查看其他示例。
完整的示例代码:
public partial class Phonebook : Form
{
private void AddContact_Click(object sender, EventArgs e)
{
MakeContact MC = new MakeContact(this);
MC.Show();
}
public void AddContacts(string Name)
{
Label name = new Label();
// (...)
this.Controls.Add(name);
}
}
public partial class MakeContact : Form
{
private PhoneBook pBook = null;
public MakeContact() : this(null) { }
public MakeContact(PhoneBook phoneBook)
{
InitializeComponent();
this.pBook = phoneBook;
}
private void FinishContact_Click(object sender, EventArgs e)
{
string Name = FullName.Text;
this.pBook?.AddContacts(Name);
this.Close();
}
}
- 1 回答
- 0 关注
- 71 浏览
添加回答
举报