none
elegir opcion según Checkbox RRS feed

  • Pregunta

  • Hola a todos, y gracias por leer mi pregunta, estoy realizando un WindForms que contiene un CheckBox, mi intención es que si se marca, una string obtenga un valor, y sino, obtenga otro distinto, esto si que lo he logrado, pero el problema es que la variable string d "se destruye" una vez salgo del if, como puedo hacer para guardar esa string en el método que estoy realizando, muchas gracias.

            private void btnAceptar_Click(object sender, EventArgs e)
            {
                nombre=...;

                numero=...;
                if (checkBox1.Checked == true)
                {
                    string d = "opcion1";
                    
                }
                else
                {
                    string d = "opcion2";
                }
                int veces = 0;
                const int NumeroIntentos = 3;
                if (comprobarUsuario(nombre, numero,d))

    ..........

    }

    martes, 22 de marzo de 2011 20:24

Respuestas

  • Hola amigo

    No declares la variable dentro de tu condicional if.. o sea:

    uso tu codigo

     

     private void btnAceptar_Click(object sender, EventArgs e)
      {
       nombre=...;
    
       numero=...;
       string d="";// asi la declaras vacia, pero yo haria mas y quedaria asi: string d= "opcion2";
       if (checkBox1.Checked == true)
       {
        d = "opcion1";    
       }   
       int veces = 0;
       const int NumeroIntentos = 3;
       if (comprobarUsuario(nombre, numero,d))
    
    ..........
    
    de esa forma la variable solo se sobrescribe si se cumple la condición, sino tiene su valor por defecto... hay otras maneras de manejar el tema, pudieras usar el evento CheckedChanged del checkBox... etc pero hazlo como te quede mas cómodo. Saludos

    ** para que entiendas porque te estaba ocurriendo lo que comentas con la variable d, seria lo mismo que si intentaras usar alguna variable que hayas declarado en un método X, en otro método Y, sencillamente en el método Y no vas a poder usarla porque esta declarada en otro ámbito y la variable solo existe en su método X... eso mismo ocurre acá si la declaras dentro del If, fuera de el no existe... y otra cosa, por mas que en el else la declaras nuevamente, no creas que es la misma variable que estaba en el if, es otra nueva, si dejo tu código como lo pusiste originalmente corrigiendo este defecto, quedaría así:

     private void btnAceptar_Click(object sender, EventArgs e)
        {
          nombre=...;
    
          numero=...;
          string d = "";
          if (checkBox1.Checked == true)
          {
             d = "opcion1";
            
          }
          else
          {
            d = "opcion2";
          }
          int veces = 0;
          const int NumeroIntentos = 3;
          if (comprobarUsuario(nombre, numero,d))
    
    ..........
    en este caso si es la misma variable d la que se escribe en el if o en el else... Espero te haya quedado mas claro
    • Marcado como respuesta Ynos_86 martes, 22 de marzo de 2011 21:37
    martes, 22 de marzo de 2011 20:42

Todas las respuestas

  • Hola amigo

    No declares la variable dentro de tu condicional if.. o sea:

    uso tu codigo

     

     private void btnAceptar_Click(object sender, EventArgs e)
      {
       nombre=...;
    
       numero=...;
       string d="";// asi la declaras vacia, pero yo haria mas y quedaria asi: string d= "opcion2";
       if (checkBox1.Checked == true)
       {
        d = "opcion1";    
       }   
       int veces = 0;
       const int NumeroIntentos = 3;
       if (comprobarUsuario(nombre, numero,d))
    
    ..........
    
    de esa forma la variable solo se sobrescribe si se cumple la condición, sino tiene su valor por defecto... hay otras maneras de manejar el tema, pudieras usar el evento CheckedChanged del checkBox... etc pero hazlo como te quede mas cómodo. Saludos

    ** para que entiendas porque te estaba ocurriendo lo que comentas con la variable d, seria lo mismo que si intentaras usar alguna variable que hayas declarado en un método X, en otro método Y, sencillamente en el método Y no vas a poder usarla porque esta declarada en otro ámbito y la variable solo existe en su método X... eso mismo ocurre acá si la declaras dentro del If, fuera de el no existe... y otra cosa, por mas que en el else la declaras nuevamente, no creas que es la misma variable que estaba en el if, es otra nueva, si dejo tu código como lo pusiste originalmente corrigiendo este defecto, quedaría así:

     private void btnAceptar_Click(object sender, EventArgs e)
        {
          nombre=...;
    
          numero=...;
          string d = "";
          if (checkBox1.Checked == true)
          {
             d = "opcion1";
            
          }
          else
          {
            d = "opcion2";
          }
          int veces = 0;
          const int NumeroIntentos = 3;
          if (comprobarUsuario(nombre, numero,d))
    
    ..........
    en este caso si es la misma variable d la que se escribe en el if o en el else... Espero te haya quedado mas claro
    • Marcado como respuesta Ynos_86 martes, 22 de marzo de 2011 21:37
    martes, 22 de marzo de 2011 20:42
  • muchas gracias, me habia obcecado con poner el string y claro, daba igual lo que pusiera que siempre daba error..
    martes, 22 de marzo de 2011 21:38