elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  No funciona el código
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No funciona el código  (Leído 3,008 veces)
Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
No funciona el código
« en: 8 Junio 2018, 04:39 am »

Hola:

Tengo este código de abajo. Solo es un Form y un label. Tiene que alterar los colores con el tiempo de 0.05 segundos, en este ejemplo puse 500 ms para ver el cambio. Mientras el form esté de color blanco, label tiene que estar en negro, luego cambia al revés, es decir, el forma de blanco se pone en negro y las letras del lebel del negro al blanco así por cada cierto tiempo. Nunca muestra el form en pantalla.

Código
  1. using System.Drawing;
  2. using System.Threading;
  3. using System.Windows.Forms;
  4.  
  5. namespace Apruebalos_a_todos_cs
  6. {
  7.    public partial class Form1 : Form
  8.    {
  9.        public Form1()
  10.        {
  11.            InitializeComponent();
  12.  
  13.            while (true)
  14.            {
  15.                cambioColor();
  16.                Thread.Sleep(500);
  17.                cambioColor2();
  18.                Thread.Sleep(500);
  19.            }
  20.        }
  21.  
  22.        void cambioColor()
  23.        {
  24.            this.BackColor = Color.Black; // Formulario negro.
  25.            //this.ForeColor = Color.White; // Cambia textos en blanco.
  26.            label1.ForeColor = Color.White;
  27.        }
  28.  
  29.        void cambioColor2()
  30.        {
  31.            this.BackColor = Color.White; // Formulario blanco.
  32.            //this.ForeColor = Color.Black; // Cambia textos en negro.
  33.            label1.ForeColor = Color.Black;
  34.        }
  35.    }
  36. }

¿Qué hago mal?

Saludos.


En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: No funciona el código
« Respuesta #1 en: 8 Junio 2018, 05:30 am »

Porque esa no es la forma de hacerlo. Si bloqueas el hilo principal de esa forma con un bucle infinito, lo extraño es que no te diga Windows que la aplicación se fue a la ***** y se cierre.

El Thread.Sleep es para usarlo en un hilo. Entonces eso ya te puede dar una pista de como podrías hacerlo, o bien con hilos, algo desproporcionado para la chorrada que vas hacer o usar eventos, por ejemplo con el componente Timer o similar.

https://msdn.microsoft.com/es-es/library/system.timers.timer(v=vs.110).aspx


En línea

Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: No funciona el código
« Respuesta #2 en: 8 Junio 2018, 07:34 am »

Ya me salió.

Código
  1. using System.Drawing;
  2. using System.Windows.Forms;
  3.  
  4. namespace Apruebalos_a_todos_cs
  5. {
  6.    public partial class Form1 : Form
  7.    {
  8.        public Form1()
  9.        {
  10.            InitializeComponent();
  11.            timer1.Start();
  12.        }
  13.  
  14.        void cambioColor()
  15.        {
  16.            this.BackColor = Color.Black; // Formulario negro.
  17.            //this.ForeColor = Color.White; // Cambia textos en blanco.
  18.            label1.ForeColor = Color.White;
  19.        }
  20.  
  21.        void cambioColor2()
  22.        {
  23.            this.BackColor = Color.White; // Formulario blanco.
  24.            //this.ForeColor = Color.Black; // Cambia textos en negro.
  25.            label1.ForeColor = Color.Black;
  26.        }
  27.  
  28.        private void timer1_Tick(object sender, System.EventArgs e)
  29.        {
  30.            cambioColor();
  31.            timer1.Stop();
  32.            timer2.Start();
  33.        }
  34.  
  35.        private void timer2_Tick(object sender, System.EventArgs e)
  36.        {
  37.            cambioColor2();
  38.            timer2.Stop();
  39.            timer1.Start();
  40.        }
  41.    }
  42. }

Lo que no me sale, es el label en el centro de la pantalla cuando maximizo automáticamente el formulario.

Saludos.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: No funciona el código
« Respuesta #3 en: 12 Junio 2018, 13:33 pm »

Dos tareas: 1. Leer sobre multi-threading en .NET, programación asincrónica. y 2. usar el componente BackgroundWorker para lo que pretendes hacer (en la MSDN tienes documentación y ejemplos de uso, al igual que para el punto nº1).

Saludos!
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No funciona codigo sencillo... « 1 2 3 »
Programación Visual Basic
hAcKeR92 20 6,981 Último mensaje 20 Febrero 2008, 02:34 am
por Chefito
Por qué no me funciona este codigo?
Desarrollo Web
luison 0 2,462 Último mensaje 24 Septiembre 2010, 21:57 pm
por luison
[batch ]no funciona codigo
Scripting
z_ane_666 1 3,386 Último mensaje 8 Enero 2011, 09:17 am
por leogtz
No me funciona mi codigo php.
PHP
.:Weeds:. 5 4,760 Último mensaje 23 Junio 2012, 00:46 am
por Pablo Videla
Código que no funciona
Programación C/C++
uslis 2 1,521 Último mensaje 17 Octubre 2018, 16:16 pm
por uslis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines