none
Accesar a datetimepicker desde otro formulario. RRS feed

  • 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

    lunes, 27 de octubre de 2014 19:48

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
    lunes, 27 de octubre de 2014 20:51

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!!!

    lunes, 27 de octubre de 2014 20:17
  • 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

    lunes, 27 de octubre de 2014 20:42
  • 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
    lunes, 27 de octubre de 2014 20:51
  • Ya quedó. Como tú dices; no lo estaba poniendo corréctamente. Gracias.

    Edr

    lunes, 27 de octubre de 2014 21:36