-1

実行時に、私のプログラムは同じコレクションを持つ 2 つのプロパティを割り当てます。コレクションへの変更が1つのプロパティで行われ、2つ目は同じコレクションをそのまま保持するように、2つのプロパティを取りました。しかし、舞台裏では両方が同じを指しているため、1 つのプロパティを変更せずにコレクションを保持することはできません。変更がない場合は 1 つのプロパティがこれを処理し、変更が行われた場合は他のプロパティがこれを処理するように、この [OK] と [キャンセル] ボタンを使用する必要があります。

どうすればこれを管理できますか?

このような

private void btnOK_Click(object sender, EventArgs e)
        {
            Program.currOrder.OrderItems[Program.editIndex].AppliedCustomization = lstBtn;//objFreecusatomization.AllAppliedItems;
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            Program.currOrder.OrderItems[Program.editIndex].AppliedCustomization = actualBtnLIst;
            this.DialogResult = DialogResult.Cancel;
        }

これらは、他のプログラムから割り当てられている 2 つのプロパティです。

public List<btnObject> lstBtn;
        public List<btnObject> actualBtnLIst { get; set; }

他のプログラムからは、これがどのように設定されているかです

  frmPrepare.actualBtnLIst = frmPrepare.lstBtn = Program.currOrder.OrderItems[currIdx].AppliedCustomization;
4

2 に答える 2

1

何を求めているのかわかりにくいですが、元のリストのコピーを保持しようとしている場合は、参照を割り当てる代わりにコピーを作成する必要があります。

frmPrepare.lstBtn = Program.currOrder.OrderItems[currIdx].AppliedCustomization;
frmPrepare.actualBtnLIst = frmPrepare.lstBtn.ToList();
// ToList will create a copy of each item reference in the collection.
于 2013-08-28T12:47:41.727 に答える