1 回答

TA貢獻1780條經(jīng)驗 獲得超4個贊
我在評論中描述的示例:
執(zhí)行此操作時:
Phonebook PB = new Phonebook();
創(chuàng)建類(窗體)的新實例:這不是創(chuàng)建窗體和您嘗試更新的窗體實例(同一對象)的同一個窗體實例。這是一個不同的對象。
無論您對此新對象進行何種更改,它都不會反映在原始的、現(xiàn)有的對象中。PhoneBookMakeContact
如何解決:
向 MakeContact 窗體添加一個構(gòu)造函數(shù),該構(gòu)造函數(shù)接受 PhoneBook 類型的參數(shù)和以下類型的私有對象:Phonebook
private PhoneBook pBook = null;
public MakeContact() : this(null) { }
public MakeContact(PhoneBook phoneBook)
{
InitializeComponent();
this.pBook = phoneBook;
}
將構(gòu)造函數(shù)中傳遞的參數(shù)分配給相同類型的私有字段。然后,此字段將用于調(diào)用該類的 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 關(guān)注
- 88 瀏覽
添加回答
舉報