pasar datos entre varios formularios a un mismo form en c sharp
-
viernes, 27 de abril de 2012 20:27Hola tengo la siguiente consulta no se si es posible, tengo un formulario donde se carga muchos datos de Clientes, en un campo traigo de otro formulario datos que estan en un datagridview y hasta ahi todo bien (uso uno de los modelos de ejemplo con constructores de Leandro tuttini), pero necesito como minimo hacer esto para otros 2 cajas de texto mas y de otros formularios que ninguno de los tres son de los mismos form donde tendria que traer el dato, esto es posible? como hago esto sin perder los datos de las variables traidos anteriormente? y sino hay una manera de hacerlos tipo popup como en .net, que haciendo esto no pierdo las variables??? gracias de antemano.....en realidad ahora que lo miro necesito traer datos de unos 5 formularios diferentes en total
- Editado Laura Arevalo viernes, 27 de abril de 2012 20:29
Todas las respuestas
-
viernes, 27 de abril de 2012 22:55ModeradorLo siento Laura, no entiendo bien su situación. Entiendo la esencia del predicamento, creo yo: Compartir información entre formularios; lo que no estoy entendiendo bien es qué tipo de información (datos en un DataSet, datos en una colección de objetos, etc.) y cómo utilizará esa información en los otros formularios. Tal vez si explica un poco más detalladamente cómo es que usted actualmente recupera y almacena los datos, entonces podremos ayudarle mejor.
Jose R. MCP
-
viernes, 27 de abril de 2012 23:06Moderador
hola
si has logrado comunicar un form con otro, el hacerlo desde otros botones solo implcia replicar la misma tecnica
solo que lo harias con un form distinto, seria
private void button1_click(..){
Form1 frm1 = new Form1(TextBox1.Text);
frm1.Show()
}
private void button2_click(..){
Form2 frm2 = new Form2(TextBox2.Text);
frm2.Show()
}
como veras se repite la tecncia pero con otro form y otro textbox
como hago esto sin perder los datos de las variables traidos anteriormente?
pero cuale sserian estas variables ?
porque se supone que la info la termina conservando el form que inicia o sea el principal
una consulta, el problema lo tienes al enviar datos al form hijo, o a la vuelta cuando desde el hijo envias info al forma que lo invoco
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
martes, 01 de mayo de 2012 14:22
Hola.
Si lo que quieres es lo que supongo, o sea, pasar informacion entre formularios pero sin perder la referencia, deberias usar la sobrecarga de los Formularios que recibien informacion como te dice Leonardo.
En lo personal me gusta usar objetos, asi los instancio una sola vez y luego los paso entre formularios sin perder la referencia.
Saludos.
-
miércoles, 02 de mayo de 2012 13:02
bien siguiendo con este tema de pasar datos de varios formularios a un mismo formulario , sigo sin lograr mantener los datos que traje de los anteriores, despues de traer el ultimo que visité. o sea que pierdo los valores de las ultimas visitas, mas o menos este es el codigo que tengo de traer datos de dos formularios distintos, que me faltaría para mantener esos datos sin perderlos???
formulario detalle el que llamara a los formularios a consultar para traer los datos
public partial class Clientes : Form
{
private int? idbusqueda= null;
private string descripcion = string.Empty;
private string _idbusqueda = "";
public string IdBusqueda
{
get
{
return _idbusqueda;
}
set
{
_idbusqueda = value;
}
}
public Clientes()
{
InitializeComponent();
}
public Clientes(int idbusqueda, string descripcion) : this()//para traer los datos de la afip
{
this.idbusqueda = idbusqueda;
this.descripcion = descripcion;
}
private void Clientes_Load(object sender, EventArgs e)
{
// TODO: esta línea de código carga datos en la tabla 'localidadesDataSet.Localidad' Puede moverla o quitarla según sea necesario.
this.localidadTableAdapter.Fill(this.localidadesDataSet.Localidad);
// TODO: esta línea de código carga datos en la tabla 'provinciaDataSet.Provincia' Puede moverla o quitarla según sea necesario.
this.provinciaTableAdapter.Fill(this.provinciaDataSet.Provincia);
//valores iniciales
//dtpFecha.Value =DateTime.Now;
txtCodCliente.Text = Convert.ToString(AutonumericoId ());
dtp_FechaVtoSedronar.Value = DateTime.Now.AddYears(1);
dtp_FechaVtoIVA.Value = DateTime.Now.AddYears(1);
dtpFechaVtoPercepDGR.Value = DateTime.Now.AddYears(1);
//DATOS TRAIDOS DE OTROS FORMULARIOS
if (idbusqueda.HasValue)//del form de afip
txtAFIP.Text = Convert.ToString(idbusqueda);
lblActividad.Text = descripcion;
txtContactoVendedor .Text = Convert.ToString(_idbusqueda);//del form de vendedor
}***********************************************
formularios padres
**********************************************
private void dgrv_AFIP_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewRow row = dgrv_AFIP.CurrentRow;
int idbusqueda = Convert.ToInt32(row.Cells[0].Value);
string descripcion =Convert .ToString (row.Cells[1].Value).Trim ();
lblCodAct.Text = Convert.ToString(idbusqueda);
Clientes form = new Clientes (idbusqueda,descripcion);
this.Hide();
form.Show();
}****************************************************************
private void dgrv_Vendedores_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewRow row = dgrv_Vendedores.CurrentRow;
string idbusqueda = Convert .ToString (row.Cells[1].Value);
Clientes form = new Clientes ();
form.IdBusqueda =idbusqueda;
this.Hide();
form.Show();
} -
miércoles, 02 de mayo de 2012 18:48
Hola.
Como dije en mi comentario anterior, lo ideal seria que uses Clases, por ejemplo:
public class Buscar
{
public int? BuscarID{get; set; }
public string Descripcion{ get; set; }
}
entonces en el contructor de tu formulario cuando lo instancias le pones como argumento una intancia de la clase Buscar, ejemplo:
Buscar id = new Buscar();
id.BuscarID =1;
id.Descripcion ="Hola";
var c = new Cliente(id);
Por otro lado, el contructor de tu formulario deberia ser algo como:
Buscar buscar=null;
public Clientes(Buscar b)
{
this.buscar = b;
}private void Clientes_Load(object sender, EventArgs e)
{txtClienteID.Text = buscar.BuscarID.Value.ToString();
txtDescripcion.Text = buscar.Descripcion;
}
Con esto tendrias referencia al mismo objeto en todos los formularios que lo pases.
OJO: si cierrar el formulario en el que se creo la instancia esta es borrada de memoria.
PD: Te recomiendo que le cambies el nombre al formulario, ya que parece el nombre de una Clase cliente y no un formulario.
Saludos.
- Editado By AlaN miércoles, 02 de mayo de 2012 18:48
- Editado By AlaN miércoles, 02 de mayo de 2012 18:51 Add Code
- Marcado como respuesta Laura Arevalo martes, 15 de enero de 2013 21:27

