Problema con checkbox

Iniciado por jaxoR, 6 Mayo 2015, 06:18 AM

0 Miembros y 1 Visitante están viendo este tema.

jaxoR

Bueno, mi problema es medio raro. Simplemente coloque un checkbox, que al clickearlo se active el textBox.

Lo mas raro de todo esto, es que cuando clickeo en el, no se habilita el checkbox... Es como si no me tomara el check.

Código que uso:

Código (csharp) [Seleccionar]
public Form1()
       {
           InitializeComponent();
           textBox2.Enabled = false;

       }

       private void checkBox1_CheckedChanged(object sender, EventArgs e)
       {
           if (checkBox1.Checked == true)
           {
               textBox2.Enabled = true;
           }
           else
           {
               textBox2.Enabled = false;
           }
       }

Eleкtro

#1
Buenas

¿El bloque de ese event-handler lo has copiado y pegado sin más?, es la única razón que se me ocurre por la que "no haga nada",
recuerda que en C# se auto-genera el código de la suscripción a eventos en la class 'NombreDelFom.Designer.cs', deberías tener algo cómo esto de abajo en el bloque del método 'InitializeComponent', de lo contrario, modifícalo añadiendo lo que he resaltado:

Código (csharp,8) [Seleccionar]
partial class Form1

   //...

   private void InitializeComponent()
   {
        //...
        this.checkBox1.CheckedChanged += new EventHandler(this.checkBox1_CheckedChanged);
        //...
    }

   //...

}


Aparte de eso, puedes simplificar esa condicional que escribiste, de la siguiente manera:
Código (csharp) [Seleccionar]
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
   textBox2.Enabled = ((CheckBox)sender).Checked;
}


Saludos








jaxoR

No lo tenía, lo agregue y me tira error:

No se puede encontrar el tipo o el nombre de espacio de nombres 'EventHandler' (¿falta una directiva using o una referencia de ensamblado?)

Código (csharp) [Seleccionar]
private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
            this.button1 = new System.Windows.Forms.Button();
            this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button2 = new System.Windows.Forms.Button();
            this.button3 = new System.Windows.Forms.Button();
            this.dataGridView1 = new System.Windows.Forms.DataGridView();
            this.checkBox1 = new System.Windows.Forms.CheckBox();
            this.checkBox1.CheckedChanged += new EventHandler(this.checkBox1_CheckedChanged);
            this.textBox2 = new System.Windows.Forms.TextBox();
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
            this.SuspendLayout();

Eleкtro

#3
¿Llevas poco tiempo programando en .Net, verdad?.

Cuando tengas un error de ese tipo y no sepas cómo solucionarlo, busca el miembro en la documentación oficial online, la MSDN:
EventHandler Delegate

Fíjate donde pone "Namespace" y ahí encontrarás la solución ("espacio de nombres" en Castellano, aunque no te aconsejo que sigas programando con la IDE de VS en Castellano).

Puedes hacer dos cosas, importarlo/referenciarlo:
Código (csharp) [Seleccionar]
using System;
(puedes asignarle un alias también)

O escribirlo directamente:
Código (csharp) [Seleccionar]
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);

Saludos.








jaxoR

Hace 3 meses que programo en .Net, pero nunca tuve que tocar el Designer jaja

Gracias por la ayuda, ya se soluciono.

fran800m

CitarHace 3 meses que programo en .Net, pero nunca tuve que tocar el Designer jaja

Jajaja, tranquilo, yo llevo 11 años y aún sigo gozando con alguna de las bromas que te gasta el fantasma de Visual Studio xD

Eleкtro

#6
Es que el problema en realidad no tiene que ver con no haber usado nunca el designer, sino más bien tiene que ver con un desconocimiento del manejo de eventos y namespaces, y eso sucede por que 3 meses aprendiendo un lenguaje no es nada, y mucho menos lo es en .Net ...en ese tiempo no se aprende ni el 4% de toda su magnitud, y de todas formas siempre  (SIEMPRE)  hay algo nuevo que aprender mientras van pasando los años, con una librería de classes tan gigantesca y una IDE con cientos de características de las cuales algunas son muy recónditas, ni los más veteranos pueden aprenderlo y memorizarlo todo a la perfección, así que no te desanimes xD, pero aprende sobre eso que comenté (y sobre delegados), son cosas básicas y esenciales que a estas alturas ya deberías conocer.

Saludos!