Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: jaxoR en 6 Mayo 2015, 06:18 am



Título: Problema con checkbox
Publicado por: jaxoR en 6 Mayo 2015, 06:18 am
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
  1. public Form1()
  2.        {
  3.            InitializeComponent();
  4.            textBox2.Enabled = false;
  5.  
  6.        }
  7.  
  8.        private void checkBox1_CheckedChanged(object sender, EventArgs e)
  9.        {
  10.            if (checkBox1.Checked == true)
  11.            {
  12.                textBox2.Enabled = true;
  13.            }
  14.            else
  15.            {
  16.                textBox2.Enabled = false;
  17.            }
  18.        }


Título: Re: Problema con checkbox
Publicado por: Eleкtro en 6 Mayo 2015, 10:12 am
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
  1. partial class Form1
  2.  
  3.    //...
  4.  
  5.    private void InitializeComponent()
  6.    {
  7.         //...
  8.         this.checkBox1.CheckedChanged += new EventHandler(this.checkBox1_CheckedChanged);
  9.         //...
  10.     }
  11.  
  12.    //...
  13.  
  14. }

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

Saludos


Título: Re: Problema con checkbox
Publicado por: jaxoR en 6 Mayo 2015, 16:39 pm
No lo tenía, lo agregue y me tira error:

Código:
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
  1. private void InitializeComponent()
  2.        {
  3.            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
  4.            this.button1 = new System.Windows.Forms.Button();
  5.            this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
  6.            this.textBox1 = new System.Windows.Forms.TextBox();
  7.            this.button2 = new System.Windows.Forms.Button();
  8.            this.button3 = new System.Windows.Forms.Button();
  9.            this.dataGridView1 = new System.Windows.Forms.DataGridView();
  10.            this.checkBox1 = new System.Windows.Forms.CheckBox();
  11.            this.checkBox1.CheckedChanged += new EventHandler(this.checkBox1_CheckedChanged);
  12.            this.textBox2 = new System.Windows.Forms.TextBox();
  13.            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
  14.            this.SuspendLayout();


Título: Re: Problema con checkbox
Publicado por: Eleкtro en 6 Mayo 2015, 16:51 pm
¿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 (https://msdn.microsoft.com/en-us/library/system.eventhandler%28v=vs.110%29.aspx)

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
  1. using System;
(puedes asignarle un alias también)

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

Saludos.


Título: Re: Problema con checkbox
Publicado por: jaxoR en 6 Mayo 2015, 17:00 pm
Hace 3 meses que programo en .Net, pero nunca tuve que tocar el Designer jaja

Gracias por la ayuda, ya se soluciono.


Título: Re: Problema con checkbox
Publicado por: fran800m en 9 Mayo 2015, 13:51 pm
Citar
Hace 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


Título: Re: Problema con checkbox
Publicado por: Eleкtro en 9 Mayo 2015, 14:06 pm
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!