2010-02-16 3 views
8

Je crée une application Windows avec C#. J'utilise la boîte de dialogue de couleur pour que l'utilisateur sélectionne une couleur. J'aimerais stocker cette couleur dans une base de données, et pouvoir la récupérer plus tard, et être capable d'utiliser cette couleur dans l'interface utilisateur.stocker et récupérer des couleurs avec la base de données, l'application C# windows forms

Quelle approche me suggérez-vous?

+0

avez-vous déjà un databas e que vous utilisez pour cette application? –

Répondre

10

Le meilleur moyen sera de stocker la couleur hex dans un champ de base de données nvarchar(7) ... l'entrée serait #ffffff comme exemple. varchar(6) fonctionnerait aussi bien, et prend moins de place dans votre DB. Assurez-vous simplement d'ajouter le # dans votre code.

Puisque vous avez besoin pour le convertir en/d'une couleur de contrôle, vous pouvez utiliser System.Drawing.ColorTranslator.FromHtml(someHexColor)

// Hex to Control Color 
var myColor = "#[color from database]"; 
var myControlColor = System.Drawing.ColorTranslator.FromHtml(myColor); 

// Control Color to Hex 
var colorBlue = System.Drawing.Color.Blue; 
var hexBlue = System.Drawing.ColorTranslator.ToHtml(colorBlue); 
+2

+1 - bien que je crois qu'un 'varchar' suffirait puisque vous ne vous inquiétez pas d'unicode pour les valeurs RVB. – CAbbott

+0

@ CAbbot, c'est vrai ... la force de l'habitude pour moi depuis que j'ai tout mis en place pour la localisation ... mon mauvais. –

+0

mais comment puis-je récupérer ces valeurs et les définir pour contrôler les couleurs? – jello

4

J'utilise les fonctions System.Drawing.Color.FromArgb() et System.Drawing.Color.ToArgb () pour convertir la couleur et en entier, et l'enregistrer comme int sur la base de données

+0

Cela aussi est une bonne méthode, cependant, je suppose que je préfère être en mesure de regarder la base de données et de comprendre le contenu. –

+0

Je suis d'accord ... est un peu un compromis entre l'espace disque et la lisibilité –

0

j'ai trouvé un moyen d'obtenir le code hexadécimal d'une couleur sélectionnée avec ColorDialog

ColorDialog col = new ColorDialog(); 

col.ShowDialog(); 

string color = col.Color.ToArgb().ToString("x"); 

color = color.Substring(2, 6); 

color = "#" + color; 

MessageBox.Show(color); 

button1.BackColor = System.Drawing.ColorTranslator.FromHtml(color); 
Questions connexes