none
PASAR valor de un textbox de un formulario a otra clase (no es formulario) RRS feed

  • Pregunta

  • hola.

    a ver si me explico, que llevo 3 horas con lo mismo y no lo consigo....

    tengo un formulario:

    private void btAceptar_Click_1(object sender, EventArgs e)
            {
                if (cbManualGeo.Checked)
                {
                    try
                    {
                        double latitud = double.Parse(tbLatitud.Text);
                        double longitud = double.Parse(tbLongitud.Text);
                        //string datum = cbDatum.SelectedItem.ToString();   se ha elimitado del formulario (ocultado)
                        unidad.posicionRef = new CPosicion(latitud, longitud);//datum);
                        unidad.setArchivoDatosPosicion("MANUAL", "MANUAL-GEO");
                        DateTime.TryParse(tbHoraRef2.Text, out unidad.horaRef);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Compruebe los valores de posición", "Error en la entrada de datos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
    
                string HORASUBMAR = this.txtboxhorasub.Text;
                unidad.dtPosiciones = this.dtPosiciones;
                this.Close();
            }

    DONDE AL PULSAR EL BOTON CERRAR (ejecuta el código anterior).

    ME INTERESA CONCRETAMENTE LA VARIABLE:   HORASUBMAR.

    necesito sacarla para trabajr con ella en otra clase.

    el formulario y la clase pertenecen al mismo espacio de nombres

    como puedo trasladarla, es decir, hacerla visible desde la clase GenerarSIMDIS ?.

    gracas

    jueves, 5 de marzo de 2015 14:27

Respuestas

  • Algo así:

    public class GenerarSIMDIS
    {
        public static string HoraSub { get; set; }
        ....
    }

    Y se asigna así:

    private void btAceptar_Click_1(object sender, EventArgs e)
            {
                if (cbManualGeo.Checked)
                {
                    try
                    {
                        double latitud = double.Parse(tbLatitud.Text);
                        double longitud = double.Parse(tbLongitud.Text);
                        //string datum = cbDatum.SelectedItem.ToString();   se ha elimitado del formulario (ocultado)
                        unidad.posicionRef = new CPosicion(latitud, longitud);//datum);
                        unidad.setArchivoDatosPosicion("MANUAL", "MANUAL-GEO");
                        DateTime.TryParse(tbHoraRef2.Text, out unidad.horaRef);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Compruebe los valores de posición", "Error en la entrada de datos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
    
                
                GenerarSIMDIS.HoraSub = txtboxhorasub.Text;
                unidad.dtPosiciones = this.dtPosiciones;
                this.Close();
            }


    Jose R. MCP
    Code Samples


    jueves, 5 de marzo de 2015 14:34
    Moderador

Todas las respuestas

  • hola.. Me encuentro en serias dificultades. No consigo capturar el valor de un maskedtextbox para llevarlo a otra clase.

    código del formulario donde se asigna el maskedtexbox.

     private void btAceptar_Click_1(object sender, EventArgs e)
            {
                if (cbManualGeo.Checked)
                {
                    try
                    {
                        double latitud = double.Parse(tbLatitud.Text);
                        double longitud = double.Parse(tbLongitud.Text);
                        //string datum = cbDatum.SelectedItem.ToString();   se ha elimitado del formulario (ocultado)
                        unidad.posicionRef = new CPosicion(latitud, longitud);//datum);
                        unidad.setArchivoDatosPosicion("MANUAL", "MANUAL-GEO");
                        DateTime.TryParse(tbHoraRef2.Text, out unidad.horaRef);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Compruebe los valores de posición", "Error en la entrada de datos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
    
                
                txthorasubmarino= txtboxhorasub.Text;
                unidad.dtPosiciones = this.dtPosiciones;
                this.Close();
            }

    txthorasubmarino   LE DOY EL VALOR DEL TXTBOX donde deben escribir dicha hora.

    como veis está dentro del evento de un botón que es el que cierra ese formulario.

    pero necesito sacarlo a otra clase, llamad GENERARSIMDIS.

    Cómo puedo hacerlo?.

    jueves, 5 de marzo de 2015 13:37
  • Podrían haber varias formas de hacer lo que busca.  Por ejemplo, si el formulario al cual pertenece ese botón se presenta modalmente y lo que se necesita es exportar lo que tiene ese MaskedTextBox, una posibilidad es usar Hide() en vez de Close() (porque creo que Close() destruye los valores del formulario) y luego en el código donde se mostró el formulario modalmente se recupera el valor a través de una propiedad pública.

    Otra forma que es independiente de cómo se presenta el formulario sería que GENERARSIMDIS tuviera un miembro estático que reciba el valor, o bien que su constructor acepte un valor y que se cree una instancia de la clase al darle clic al botón, que luego supongo habría que darle a "alguien más" (entiéndase otro formulario porque este está destruyéndose con la llamada a Close() ).


    Jose R. MCP
    Code Samples

    jueves, 5 de marzo de 2015 14:00
    Moderador
  • Podrían haber varias formas de hacer lo que busca.  Por ejemplo, si el formulario al cual pertenece ese botón se presenta modalmente y lo que se necesita es exportar lo que tiene ese MaskedTextBox, una posibilidad es usar Hide() en vez de Close() (porque creo que Close() destruye los valores del formulario) y luego en el código donde se mostró el formulario modalmente se recupera el valor a través de una propiedad pública.

    Otra forma que es independiente de cómo se presenta el formulario sería que GENERARSIMDIS tuviera un miembro estático que reciba el valor, o bien que su constructor acepte un valor y que se cree una instancia de la clase al darle clic al botón, que luego supongo habría que darle a "alguien más" (entiéndase otro formulario porque este está destruyéndose con la llamada a Close() ).


    Jose R. MCP
    Code Samples

    Justo lo que necesito es que GENERARSIMDIS, tenga un miembro estático que reciba el valor...

    pero no lo consigo . . .

    un ejemplo??...

    jueves, 5 de marzo de 2015 14:11
  • Ya había visto esta pregunta en otra parte.  ¿Alguna razón especial para duplicarla aquí?

    Jose R. MCP
    Code Samples

    jueves, 5 de marzo de 2015 14:32
    Moderador
  • Algo así:

    public class GenerarSIMDIS
    {
        public static string HoraSub { get; set; }
        ....
    }

    Y se asigna así:

    private void btAceptar_Click_1(object sender, EventArgs e)
            {
                if (cbManualGeo.Checked)
                {
                    try
                    {
                        double latitud = double.Parse(tbLatitud.Text);
                        double longitud = double.Parse(tbLongitud.Text);
                        //string datum = cbDatum.SelectedItem.ToString();   se ha elimitado del formulario (ocultado)
                        unidad.posicionRef = new CPosicion(latitud, longitud);//datum);
                        unidad.setArchivoDatosPosicion("MANUAL", "MANUAL-GEO");
                        DateTime.TryParse(tbHoraRef2.Text, out unidad.horaRef);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Compruebe los valores de posición", "Error en la entrada de datos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
    
                
                GenerarSIMDIS.HoraSub = txtboxhorasub.Text;
                unidad.dtPosiciones = this.dtPosiciones;
                this.Close();
            }


    Jose R. MCP
    Code Samples


    jueves, 5 de marzo de 2015 14:34
    Moderador
  • Crea una nueva instancia de tu formulario

    para esto debes tener abierto el formulario donde esta el textbox

    ademas al texbox tienes que cambiarle la propiedad MODIFIERS y ponerla PUBLIC

    miFrm frm = new miFrm;
    
    string miNuevaVariable="";
    miNuevaVariable = frm.textbox.text
    

    si te sirvio marca como respuesta

    saludos

    • Propuesto como respuesta Jean Gastañaga jueves, 5 de marzo de 2015 18:00
    jueves, 5 de marzo de 2015 15:51
  • Hola Jose R.

    ninguna razón, dupliqué la pregunta por que no recordé que ya la había puesto anteriormente.

    he tenido una mala jornada de trabajo y me despisté al publicar por duplicado.

    disculpas.

    jueves, 5 de marzo de 2015 20:05
  • Crea una nueva instancia de tu formulario

    para esto debes tener abierto el formulario donde esta el textbox

    ademas al texbox tienes que cambiarle la propiedad MODIFIERS y ponerla PUBLIC

    miFrm frm = new miFrm;
    
    string miNuevaVariable="";
    miNuevaVariable = frm.textbox.text

    si te sirvio marca como respuesta

    saludos


    imposible tener abierto el formulario donde está el texbox del que debo extraer datos.....
    jueves, 5 de marzo de 2015 20:06
  • GRAAAAAACIASSS

    Mucho tengo que aprender todavía . . .

    gracias a todos por contestar.

    jueves, 5 de marzo de 2015 20:28
  • Muchas gracias me sirvió parte del código.
    miércoles, 1 de diciembre de 2021 1:44