Principales respuestas
Accesar a datetimepicker desde otro formulario.

Pregunta
-
Buenas tardes. Tengo el código que se muestra debajo. Mi intención es que en un datagrid que tengo en un formulario, al dar clic; me abra otro formulario donde en diferentes campos de texto y combos me aparezca reflejada la información que tiene ese datagrid.
Todo va bien; el problema es a la hora que quiero mostrar la fecha en el datetimepicker. Me marca este error: "No se puede convertir el tipo 'System.Windows.Forms.Control' en 'System.DataTime'
Estoy trabajando con formularios de Windows. Ya he hecho esto pero en el mismo formulario, pero esta vez lo quiero hacer distinto. Gracias.
private void dtgBusqueda_CellClick(object sender, DataGridViewCellEventArgs e)
{
frmModificacion objModificacion = new frmModificacion();
objModificacion.Show();
DataGridViewRow row = this.dtgBusqueda.Rows[e.RowIndex];
((TextBox)objModificacion.Controls["txtFolio"]).Text = row.Cells["cve_Jugador"].Value.ToString();
((TextBox)objModificacion.Controls["txtNombre"]).Text = row.Cells["Nombre"].Value.ToString();
((TextBox)objModificacion.Controls["txtPaterno"]).Text = row.Cells["Paterno"].Value.ToString();
((TextBox)objModificacion.Controls["txtMaterno"]).Text = row.Cells["Materno"].Value.ToString();
//cmbPrueba.Text = row.Cells["Posicion"].Value.ToString();
//((ComboBox)objModificacion.Controls["cmbMunicipio"]).Text = row.Cells["Municipio"].Value.ToString();
((ComboBox)objModificacion.Controls["cmbPosicion"]).Text = row.Cells["Posicion"].Value.ToString();
((TextBox)objModificacion.Controls["txtNumero"]).Text = row.Cells["Numero"].Value.ToString();
//((ComboBox)objModificacion.Controls["cmbSangre"]).Text = row.Cells["Sangre"].Value.ToString();
((TextBox)objModificacion.Controls["txtTelefono"]).Text = row.Cells["Telefono"].Value.ToString();
((ComboBox)objModificacion.Controls["cmbMunicipio"]).Text = row.Cells["Municipio"].Value.ToString();
((DateTime)objModificacion.Controls["dtpNacimiento"]).Text = row.Cells["Fecha_nacimiento"].Value.ToString();
}
}
Edr
Respuestas
-
po lo que veo entre parentesis tu pones el tipo de control que es... ej:
((TextBox)objModificacion.Controls["txtFolio"]).Text = row.Cells["cve_Jugador"].Value.ToString();
sin embargo el DateTimePicker lo pones como DateTime (tipo de fecha y hora) que no es un control.
((DateTime)objModificacion.Controls["dtpNacimiento"]).Text = row.Cells["Fecha_nacimiento"].Value.ToString();Intenta reemplazar ((DateTime) ... con ((DateTimePicker).. quedando así.
((DateTimePicker)objModificacion.Controls["dtpNacimiento"]).Text = row.Cells["Fecha_nacimiento"].Value.ToString();Saludos, -- Lucas Petruzzella
- Marcado como respuesta Eder31 lunes, 27 de octubre de 2014 21:36
Todas las respuestas
-
Hola.
Pero que es lo que deseas hacer, ¿pasar todos los datos de un Row del DGV a controles del Form2?, si es asi te aconsejo que en lugar de acceder a controles uses propiedades publicas, mas o menos asi:
//En el Form2 Public string DatosUno {get; set;} Public DateTime DatosDos {get; set;} private void form2_Load() { textBox1.Text = DatosUno; dtpNacimiento.Value = DatosDos; } //En el Form1 //para mandar a llamar al Form2 desde l CellClik de un row del DGV del Form1 private void dtgBusqueda_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex == -1) return; DataGridViewRow row = this.dtgBusqueda.Rows[e.RowIndex]; if(row == null) return; using (Form2 frm = new Form2()) { frm.DatosUno = row.Cells["cve_Jugador"].Value.ToString(); frm.DatosDos = Convert.ToDateTime(row.Cells["Fecha_nacimiento"].Value); frm.ShowDialog(); } }
Saludos desde Monterrey, Nuevo León, México!!!
-
Sí. A la hora de dar clic en la celda me mande al otro formulario mostrando los datos de la celda a la que di clic en el datagrid.
Lo he hecho dentro del mismo formulario, pero no en un formulario aparte. Los combo y textbox sí me han mostrado los datos; solo en el datetimepicker es donde me manda un error de conversión. Gracias por la respuesta y el consejo.
Edr
-
po lo que veo entre parentesis tu pones el tipo de control que es... ej:
((TextBox)objModificacion.Controls["txtFolio"]).Text = row.Cells["cve_Jugador"].Value.ToString();
sin embargo el DateTimePicker lo pones como DateTime (tipo de fecha y hora) que no es un control.
((DateTime)objModificacion.Controls["dtpNacimiento"]).Text = row.Cells["Fecha_nacimiento"].Value.ToString();Intenta reemplazar ((DateTime) ... con ((DateTimePicker).. quedando así.
((DateTimePicker)objModificacion.Controls["dtpNacimiento"]).Text = row.Cells["Fecha_nacimiento"].Value.ToString();Saludos, -- Lucas Petruzzella
- Marcado como respuesta Eder31 lunes, 27 de octubre de 2014 21:36
-