none
No me funciona los estados. RRS feed

  • Pregunta

  • Hola:

    Tengo en un Form1 un button1 y un checkBox. Al ejecutar la aplicación debe ponerse verde el button.

    Si marco el checkbox, el boton se pone  rojo. Ejecutado funciona bien.

    Ahora cierro el programa y cambio la propiedad del checkbox en checked = true:

    Ejecuto el programa y no me aparece el color Rojo que supuestamente al detectar el checkBox en checked parece que no ha hecho nada.


    ¿Cuál es el problema y cómo lo soluciono?

    Saludos.


    http://electronica-pic.blogspot.com

    viernes, 13 de marzo de 2015 7:26

Respuestas

  • hola

    es que deberias trabajar esto en el Form_Load cuando se inicia la aplicacion

    private void Form_Load(...)
    { 
    	if(checkBox1.Checked)
    		button1.BackgroundColor = Color.Green; 
    	else 
    		button1.BackgroundColor = Color.Green;
    
    }


    de esta forma aplicas el estado inicial cuando arranca la aplicacion

    ----

    tambien se puede hacer mas simple, si sabes que el check estara marcado cuando arranca podrias ir a las propiedades del boton y ponerlo en verde directamente en tiempo de diseño

    despues ya aplicara la logica que tengas en el evento CheckedChanged del check

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 13 de marzo de 2015 9:56
  • using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public bool Estado1 
            {
                get { return checkBox1.Checked; }
                set { button1.BackColor = value ? Color.Red : Color.Green; }
            }
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                DataBindings.Add("Estado1", checkBox1, "Checked");
            }
        }
    }
    

    viernes, 13 de marzo de 2015 11:37
  • Así también me funciona pero no se si es la programación más adecuada.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace Estado_Chec
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                Check_HOLA();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Check_HOLA();
            }
    
            private void Check_HOLA()
            {
                if (checkBox1.Checked == true)
                {
                    button1.BackColor = Color.Red;
                }
    
                else
                {
                    button1.BackColor = Color.Green;
                }
            }
        }
    }
    


    http://electronica-pic.blogspot.com

    • Marcado como respuesta Metaconta sábado, 14 de marzo de 2015 16:11
    viernes, 13 de marzo de 2015 20:36

Todas las respuestas

  • Pon el codigo, pero el problema es que al iniciar la aplicación no compruebas el estado del check, seguro que solo lo haces cundo pulsas el boton.

    Es de buena educación dar las gracias cuando te ayudan, si alguna respuesta te ha sido útil agradécelo marcándola como útil.

    viernes, 13 de marzo de 2015 8:38
  • hola

    es que deberias trabajar esto en el Form_Load cuando se inicia la aplicacion

    private void Form_Load(...)
    { 
    	if(checkBox1.Checked)
    		button1.BackgroundColor = Color.Green; 
    	else 
    		button1.BackgroundColor = Color.Green;
    
    }


    de esta forma aplicas el estado inicial cuando arranca la aplicacion

    ----

    tambien se puede hacer mas simple, si sabes que el check estara marcado cuando arranca podrias ir a las propiedades del boton y ponerlo en verde directamente en tiempo de diseño

    despues ya aplicara la logica que tengas en el evento CheckedChanged del check

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 13 de marzo de 2015 9:56
  • using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public bool Estado1 
            {
                get { return checkBox1.Checked; }
                set { button1.BackColor = value ? Color.Red : Color.Green; }
            }
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                DataBindings.Add("Estado1", checkBox1, "Checked");
            }
        }
    }
    

    viernes, 13 de marzo de 2015 11:37
  • Así también me funciona pero no se si es la programación más adecuada.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace Estado_Chec
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                Check_HOLA();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Check_HOLA();
            }
    
            private void Check_HOLA()
            {
                if (checkBox1.Checked == true)
                {
                    button1.BackColor = Color.Red;
                }
    
                else
                {
                    button1.BackColor = Color.Green;
                }
            }
        }
    }
    


    http://electronica-pic.blogspot.com

    • Marcado como respuesta Metaconta sábado, 14 de marzo de 2015 16:11
    viernes, 13 de marzo de 2015 20:36