2 つのウィンドウ フォーム間でリストを維持することに関して質問があります。アドレス帳を作成する必要があるプロジェクト用です。
連絡先の詳細をリストの形式で維持することにしました。私の最初の Windows フォーム (form1) にAddressBook
は、アドレス帳を含む list のマスター コピーが含まれています。「追加」や「編集」などの単純な機能を実験して動作させるために、アドレス帳リストに 4 つのエントリをハードコーディングしました。
Add という 2 番目の Windows フォームがあり、新しいエントリをリストに追加できます。これはうまくいきます。ADD フォームに新しい連絡先を追加すると、最初のフォーム 1 のマスター フォームに表示されます。
私の問題は EDIT フォームで発生します。AddressBook (マスター) リストを EDIT フォームに渡します。EDIT フォームはマスター リストを取得し、そのリスト内のレコードを操作できます。ただし、新しいリストをマスター ページ (form1) に送り返す場合、それは取得されません。新しいリストを正常に送り返す ADD フォームと同じコードを使用しています。ただし、編集したリストを返送する場合、このコードは機能しません。
これがform1内の私のAddressBookプロパティです
public List<Contact> addressBook;
public List<Contact> AddressBook
{
get { return addressBook;}
set {addressBook = value;}
}
編集内:
public Edit()
{
InitializeComponent();
temp = Master.AddressBook; // temp is the temporary List I update within EDIT
}
**その後、リストの一時を正常に編集できるアルゴリズムを取得しました。リスト一時に編集済みリストが含まれるようになりました* *
次に、保存ボタンを押すと、次のコードを使用します。
Master.AddressBook = temp;
必要なのは、一時リストを form1 に送り返すことだけです。
Master.AddressBook = temp;
ADDフォームを介してリストに値を追加すると、コードが機能します。
フォームを追加:
public Add()
{
InitializeComponent();
temp = Master.AddressBook;
}
**** code to add a new record into the list temp. the new record is called newRecord**********
private void btnAddClose_Click(object sender, EventArgs e)
{
stor.AddressBook = temp; // when I hit close on the form, it updates the master list AddressBook
this.Close();
}
これはおそらく非常に言葉遣いが悪いですが、本質的にコードが失敗する唯一のビットは、form1 内のマスター Addressbook を、EDIT フォームから編集されたリストであるリスト temp に置き換えることによって変更したい場合です。
私の AddressBook プロパティと関係があると思います。しかし、なぜ AddressBook を新しいレコードを含むリストに置き換えることができるのに、編集されたレコードを含むリストに置き換えることができないのか、これでは説明できません。