Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/12/2015, 21:03
agleiva
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: [C#] Cortar por lo sano

Ok, lo primero que haría es crear una lista de los pictureboxes


Código C#:
Ver original
  1. public partial class Form1 : Form
  2.     {
  3.         // Utilizaremos un string como buffer de recepción.
  4.         string Recibidos;
  5.  
  6.         private List<PictureBox> leds;
  7.  
  8.         public Form1()
  9.         {
  10.             InitializeComponent();
  11.  
  12.             //Inicializar la lista, esto debe ocurrir DESPUES de InitializeComponent()
  13.             this.leds = new[]{ this.pictureBox1, this.pictureBox2, this.pictureBox3, this.pictureBox4 }.ToList();

despues, solo es cuestion de un poco de LINQ:

Código C#:
Ver original
  1. private void Actualizar(object sender, EventArgs e)
  2.         {
  3.  
  4.             //// Asignar el valor de la trama al richTextBox.
  5.             //richTextBox1.Text = Recibidos + "\n";
  6.  
  7.             //// Selecciona la posición final para leer los mensajes entrantes.
  8.             //richTextBox1.SelectionStart = richTextBox1.Text.Length;
  9.  
  10.             //// Mantiene el scroll en la entrada de cada mensaje.
  11.             //richTextBox1.ScrollToCaret();
  12.  
  13.             var si = Properties.Resources.Led_rojo_encendido;
  14.             var no = Properties.Resources.Led_rojo_apagado;
  15.  
  16.             var valores = Recibidos.Split(' ')
  17.                                    .Select(x => x.Split('='))
  18.                                    .Select(x => new
  19.                                                 {
  20.                                                    Index = int.Parse(x[0]),
  21.                                                    Value = x[1] == "ON"
  22.                                                 });
  23.                          
  24.             foreach (var v in valores)
  25.             {
  26.                 this.leds[v.Index].Image = v.Value ? si : no;
  27.             }
  28.        }

No hace falta un switch ni ninguna cosa por el estilo.