Entwickler-Ecke

WinForms - HTML Farbe für Steuerelement?


Csharp-programmierer - Mi 07.10.15 17:27
Titel: HTML Farbe für Steuerelement?
Hallo Leute. Ich habe eine TextBox, in der der Benutzer die HTML- Farbe eingeben kann (z.B. #FF00FF). Die TextBox soll ein TextChanged Ereignis haben. Wenn sich nun der Inhalt der TextBox ändern, soll sich auch die Farbe eines Buttons in die jenige Farbe ändern. Mit dem ColorTranslator habe ich schon etwas rumexperimentiert - vergebens. Könntet ihr mir vielleicht helfen?

MFG :)


Th69 - Mi 07.10.15 19:07

Hallo,

was hast du denn probiert (und was hat dabei nicht geklappt)?
Der Code ist eigentlich ganz einfach, s z.B. Converting HTML Color Code to System.Drawing.Color [http://www.codeproject.com/Tips/279021/Converting-HTML-Color-Code-to-System-Drawing-Col]

C#-Quelltext
1:
Color color = ColorTranslator.FromHtml(textBox.Text);                    

Oder besteht das Problem eher darin, daß die Button Color nicht richtig gesetzt wird, s. z.B. How to get Color from Hexadecimal color code using .NET? [http://stackoverflow.com/questions/7127946/c-changing-button-backcolor-has-no-effect]


Csharp-programmierer - Mi 07.10.15 19:52

Genau so wollte ich es. Es haut hin, doch ich habe vor der TextBox ein Label mit dem Text "#". Der Benutzer muss nun den Hashtag nicht mehr setzten. In die HTML- Datei fügt das Programm dann individuell ein Hashtag an. Kann man es machen, dass man das # irgendwie automatisch mit intigriert? Also dass man nur den Hexadezimalcode schreibt und das Programm gleich vorn den Hashtag anschließt


Stundenplan - Mi 07.10.15 20:15

Meinst du per Stringverkettung, also '#' + textBox.Text?


Ralf Jansen - Mi 07.10.15 23:38

Zitat:
Der Benutzer muss nun den Hashtag nicht mehr setzten

Leichte Twitterverwirrung :gruebel: Nur weil etwas ein Doppelkreuz(Hash) enthält ist es noch lange kein HashTag. Das wäre genauso als würde man behaupten weil etwas ein @ enthält muss es eine EMail Adresse sein.
Zitat:
Also dass man nur den Hexadezimalcode schreibt und das Programm gleich vorn den Hashtag anschließt

Wenn es tatsächlich immer nur der Hexcode ist dann

C#-Quelltext
1:
Color color = Color.FromArgb(Convert.ToInt32(textBox.Text, 16));                    

Aber bedenke wenn du vorher ColorTranslator.FromHtml benutzen wolltest html kennt auch benannte Farben du hättest genauso gut Blue, Red etc. angeben können. Auch das wäre ein Farbe in Html nicht nur das mit dem Hash am Anfang.

Wenn du es wirklich gut machen willst prüfst du dann auch ob das was in der TextBox auch wirklich was gültiges ist. Z.b. in dem du Int32.TryParse verwendest anstatt so wie ich im Beispiel der Einfachheit halber Convert.ToInt32. Und vorher ob der User vielleicht nicht doch selbst denn Hash eingegeben hat.