|
|
|
|
|
#1 -
09/01/2010 0:32:40
|
Reporta abuso
|
Link Permanente
|
|
Clonar una coleccion
|
|
|
|
|
|
Que tal tengo poco codificando en C# y quisiera saber como poder clonar una colección ya que mi problema radica en que al enviarla a un formulario diferente lo que modifique en dicho formulario afecta directamente a mi colección ya que esto se hace por referencia. aki unos fragmentos de codigo antes de enviar la coleccion al formulario:
if (ctlgrdPartidasentrada.CurrentCell.OwningColumn.Name == "pMedidasPartida") { if (ctlgrdPartidasentrada.CurrentRow != null) { if (this.CrudAction == eCRUDAction.Read || this.PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida.Count <= 0) { if (this.PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida_Trash.Count <= 0) //Cargo las Medidas de la partida CargarMedidasPartidasTarja(PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex]); } frmMedidasPartidaTarja ofrm = new //Aqui envio mi coleccion de pMedidasPartida frmMedidasPartidaTarja(PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida, this.CrudAction); ofrm.ShowInTaskbar = false; ofrm.StartPosition = FormStartPosition.CenterScreen;
if (ofrm.ShowDialog(this) == DialogResult.OK) { //En esta parte deberia asignar la coleccion modificada en el formulario al objeto principal PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida = ofrm.MedidasPartida; if (ofrm.MedidasPartida_Trash.Count > 0) PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida_Trash = ofrm.MedidasPartida_Trash;
} } }
Parte del Codigo del Formulario:
#region Campos
GColeccion<MedidasPartidaTarja> _MedidasPartida; GColeccion<MedidasPartidaTarja> _MedidasPartida_Trash; eCRUDAction CrudAction = eCRUDAction.Read; #endregion
#region Propiedades public GColeccion<MedidasPartidaTarja> MedidasPartida { get { if (_MedidasPartida == null) _MedidasPartida = new GColeccion<MedidasPartidaTarja>(); return _MedidasPartida; } set { _MedidasPartida = value; } } public GColeccion<MedidasPartidaTarja> MedidasPartida_Trash { get { if (_MedidasPartida_Trash == null) _MedidasPartida_Trash = new GColeccion<MedidasPartidaTarja>(); return _MedidasPartida_Trash; } set { _MedidasPartida_Trash = value; } } #endregion
public frmMedidasPartidaTarja(GColeccion<MedidasPartidaTarja> value, eCRUDAction _crudValue) { InitializeComponent(); InitializeClass(); this.CrudAction = _crudValue; //Aqui asigno la coleccion que recibo, "MedidasPartidas" esta declarada localmente aun asi todo lo que le modifique afecta directamente a mi coleccion principal MedidasPartida = value;
SetEnabledControl(); SetGridColums(); SetDataSource(); } ------------------------------------------------------------------------------------------------- Nacesito saber como afectar a MedidasPartida sin que se refleje en el objeto principal, de antemano gracias por sus apoyo
|
|
|
|
|