Ok, lo primero que haría es crear una lista de los pictureboxes
Código C#:
Ver originalpublic partial class Form1 : Form
{
// Utilizaremos un string como buffer de recepción.
string Recibidos;
private List<PictureBox> leds;
public Form1()
{
InitializeComponent();
//Inicializar la lista, esto debe ocurrir DESPUES de InitializeComponent()
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 originalprivate void Actualizar(object sender, EventArgs e)
{
//// Asignar el valor de la trama al richTextBox.
//richTextBox1.Text = Recibidos + "\n";
//// Selecciona la posición final para leer los mensajes entrantes.
//richTextBox1.SelectionStart = richTextBox1.Text.Length;
//// Mantiene el scroll en la entrada de cada mensaje.
//richTextBox1.ScrollToCaret();
var si = Properties.Resources.Led_rojo_encendido;
var no = Properties.Resources.Led_rojo_apagado;
var valores = Recibidos.Split(' ')
.Select(x => x.Split('='))
.Select(x => new
{
Index = int.Parse(x[0]),
Value = x[1] == "ON"
});
foreach (var v in valores)
{
this.leds[v.Index].Image = v.Value ? si : no;
}
}
No hace falta un switch ni ninguna cosa por el estilo.