ColorDialog funktioniert nicht

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    ColorDialog funktioniert nicht

    Hallo,
    ich habe z.B. 3 Buttons, die den ColorDialog öffnen und dann
    die dazugehörige Panel färben. Das funktioniert noch ganz
    gut, aber wenn ich es mit diesem Code speichern will,

    VB.NET-Quellcode

    1. ' Variablen für RGB-Werte
    2. Dim R1 As Integer = Integer.Parse(Panel1.BackColor.R)
    3. Dim G1 As Integer = Integer.Parse(Panel1.BackColor.G)
    4. Dim B1 As Integer = Integer.Parse(Panel1.BackColor.B)
    5. Dim R2 As Integer = Integer.Parse(Panel2.BackColor.R)
    6. Dim G2 As Integer = Integer.Parse(Panel2.BackColor.G)
    7. Dim B2 As Integer = Integer.Parse(Panel2.BackColor.B)
    8. Dim R3 As Integer = Integer.Parse(Panel3.BackColor.R)
    9. Dim G3 As Integer = Integer.Parse(Panel3.BackColor.G)
    10. Dim B3 As Integer = Integer.Parse(Panel3.BackColor.B)
    11. ' Variable Text
    12. Dim text As String = R1.ToString & "," & G1.ToString & "," & B1.ToString & "|" & _
    13. R2.ToString & "," & G1.ToString & "," & B1.ToString & "|" & _
    14. R3.ToString & "," & G3.ToString & "," & B3.ToString
    15. ' Speichern
    16. My.Computer.Filesystem.WriteAllText("PFAD ZUR DATEI", text, False)


    und bei den drei Farben immer verschiedene Grüntöne benutze,
    kommt bei mir das raus:

    Quellcode

    1. 0,255,0|0,255,0|0,255,0


    Wieso funktioniert das nicht?

    Freue mich auf Antworten.
    • Überprüf mal, ob auch wirklich die richtigen Farben vorhanden sind.
    • Du verwendest zuerst R1, dann G1, dann B1, und dann zwar R2, aber dann G1 und B1.
      Benenne Variablen sinnvoll. Z.B. was die Farbe darstellen soll. Wenn sich das durch das ganze Projekt zieht, kann man nichts mehr verwechseln.
    • Du kannst ruhig bei Byte bleiben. Es kommt sowieso das selbe heraus.
    • Seit Option Infer On kann man das schreiben:

      VB.NET-Quellcode

      1. Dim R1 = Panel1.BackColor.R

      Dann hat R1 automatisch den Typ von Panel1.BackColor.R, also Byte.
    • Bennene Controls sinnvoll. Niemand kann sich merken, wofür jetzt nochmal TextBox15321 war :P
    • Setze den String entweder mit String.Format("{0},{1},{2}|...", R1, G1, B1, ...) zusammen, oder mach Dir eine Funktion ColorToString(ByVal Value As Color) As String. Die gibt einfach Den R, G und B -Wert mit "," verknüpft zurück. (Lässt sich übrigens super mit String.Join(",", ...) realisieren.)
      Anschließend verbindest Du die Farben mit String.Join("|", ColorToString(Farbe1), ...)
    • Verwende System.IO.File.WriteAll...(), um mit Dateien zu arbeiten. Der My-Namespace hat bis auf My.Resources ausgedient.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Niko Ortner“ ()