Sto costruendo un'applicazione WinForms e sto utilizzando colori specifici sulla maggior parte dei controlli. A volte lo faccio dal progettista WinForms e talvolta direttamente nel mio codice.Come implementare un codice colore a livello di applicazione in un'applicazione WinForm?
ho avuto una classe statica da qualche parte in cerca del genere:
public static class MyColors
{
public static Color DarkGreen = Color.FromArgb(0, 70, 62);
...
public static Color Orange = Color.FromArgb(239, 132, 16);
}
posso usare quei colori nel mio codice abbastanza facilmente, ma è impossibile fare dal progettista, che solleva questo errore:
MyColors.DarkGreen non è un valore valido per Int32.
(ho provato a memorizzare la rappresentazione Int32 di quei colori, ma questo viene a mancare con lo stesso errore)
La soluzione che sto utilizzando in questo momento è quello di utilizzare il codice di colore RGB nella finestra di progettazione , i valori della classe MyColors nel mio codice, e sto facendo cambiamenti usando la funzionalità replace di Visual Studio. Questa non è una buona soluzione, ma finora non sono riuscito a trovare un'idea migliore.
Qualche idea?
Nota: so di this question, che è leggermente diverso dal mio, come io non sto guardando cambiare le "KnownColors".
@Jeff: poiché voglio aggiornare i colori dei controlli di winform predefiniti (pulsante, etichetta, ecc.), Non posso realmente applicare l'attributo Editor alle loro proprietà ForeColor/BackColor, a meno che non erediti da tutti quei controlli, che suona un po 'eccessivo per me ... o mi sono perso qualcosa? – Brann
@Brann: hai già ereditato implementando il modulo. Dovresti applicarlo per eseguire l'override all'interno del tuo modulo. –
Ovviamente, i controlli all'interno del modulo dovrebbero essere impostati su Color.Empty per ereditare dal controllo genitore o bisognerà sovrascrivere anche quelli. Non credo che ci sia un'alternativa per ottenere il supporto del designer, temo. –