Ciao
La struttura Color è serializzabile, ma per quello che ho capito, la serializzazione XML non funziona con essa perchè le sue proprietà sono tutte readonly.
Quindi quello che ti consiglio di fare è, invece che salvare il colore come struttura Color, di salvare solo il suo valore ARGB (Alpha, Red, Green, Blue) che è un int e quindi è serializzabile.
Ecco come viene fuori la struttura che ti avevo proposto la volta scorsa:
/// <summary>
/// Questa struttura viene usata per racchiudere le proprietà del bottone che vuoi salvare
/// </summary>
[Serializable()]
public struct ButtonInfo
{
/// <summary>
/// Crea una struttura ButtonInfo a partire da un bottone, copiando le proprietà rilevanti
/// </summary>
public ButtonInfo(Button from)
{
this.Name = from.Name;
this.Text = from.Text;
this.Bounds = from.Bounds;
this.BackColor = from.BackColor.ToArgb();
this.ForeColor = from.ForeColor.ToArgb();
//Assegna le altre proprietà che intendi salvare
}
/// <summary>
/// Conversione implicita da Button a ButtonInfo
/// </summary>
/// <remarks>Serve per poter scrivere buttonInfo = button;</remarks>
public static implicit operator ButtonInfo(Button from)
{
return new ButtonInfo(from);
}
/// <summary>
/// Conversione implicita da ButtonInfo a Button
/// </summary>
/// <remarks>Serve per poter scrivere button = buttonInfo;</remarks>
public static implicit operator Button(ButtonInfo from)
{
Button b = new Button();
b.Name = from.Name;
b.Text = from.Text;
b.Bounds = from.Bounds;
b.BackColor = Color.FromArgb(from.BackColor);
b.ForeColor = Color.FromArgb(from.ForeColor);
//Assegna le altre proprietà che intendi salvare
return b;
}
//Nome del Button
public string Name;
//Testo del button
public string Text;
//Posizione e dimensioni del Button
public Rectangle Bounds;
//Colore di sfondo
public int BackColor;
//Colore del testo
public int ForeColor;
//Altre proprietà
}
Luca