[gelöst] Eigenschaften in TextBox ändern



  • Ich mache erste Gehversuche mit c# für Windows Phone 7 und bin hier hoffentlich richtig.

    Ich habe mehrere TextBoxes und RadioButtons eingerichet. In Abhängigkeit der Wahl eines RadioButton sollen die Eigenschaften Background, Foreground, ... verändert werden.
    TextBox1.Background = "Gray" in den Ereignismethoden der RadioButtons wird als Fehler angemeckert (cannot convert string to a brush oder so ähnlich).

    Sinn der Sache soll sein: Es gibt 4 mögliche Eingaben, von denen nach Wahl eines RadioButton nur 3 Eingaben vom Benutzer zugelassen sein sollen. Die 4. Eingabe soll blockiert werden und dient als Ausgabe einer mit den 3 Eingabewerten durchzuführenden Berechnung. Das ganze soll auch farblich erkennbar sein.



  • Suchst du vielleicht Color.FromName?
    Das kannst du dann so anwenden:

    TextBox1.Background = Color.FromName("Gray");
    


  • Es scheint da offensichtlich Unterschiede in C# für Windows und Windows Phone zu geben. Color.FromName(string) ist nicht vorhanden. Stattdessen wird Color.FromArgb(byte a,byte r,byte g,byte b) angeboten, gelingt mit der direkten Zuweisung TextBox1.Background = Color.FromArgb(125,125,125,125) aber auch nicht.



  • Wie wäre es mit einer genauen Fehlermeldung?



  • private void RadioButton1_Checked(Object sender, RoutedEventArgs e)
    {
        TextBox1.IsEnabled = false;  // soll Eingabe blockieren
        TextBox2.IsEnabled = true;   // soll Eingabe zulassen 
        TextBox3.IsEnabled = true;   // soll Eingabe zulassen 
        TextBox4.IsEnabled = true;   // soll Eingabe zulassen 
        TextBox1.Background = Color.FromArgb(125, 125, 125, 125);  // soll Farbe ändern
    }
    

    Fehler: Eine implizite Konvertierung vom Typ "System.Windows.Media.Color" in "System.Windows.Media.Brush" ist nicht möglich.



  • Die Fehlermeldung sagt doch schon alles.
    Du erstellst ein Objekt vom Typen "Color", erwartet wird aber ein "Brush" Objekt 😉

    In WPF würde man zu dem "SolidColorBrush" greifen um einfarbige Objekte zu bekommen.



  • Noch bin ich neu mit C# für WPF (Windows) und WP7 (Phone). Die Fehlermeldung sagt mir wenig. Was genau muss ich in den Einstellungen der Properties (.xaml) und der Events (.cs) machen? Wie setze ich die Properties neu? C# für WPF und für WP7 sind verschiedene Compiler für verschiedene Betriebssysteme. Möglicherweise gibt es da einige Unterschiede?



  • TextBox1.Background = Brushes.Gray;
    


  • Zeug schrieb:

    TextBox1.Background = Brushes.Gray;
    

    Mag sein für WPF, jedoch nicht für WP7 - dort gibt es keine Klasse Brushes.


  • Administrator

    Also Schritt für Schritt:
    TextBox.Background wird von der Klasse Control geerbt. Wenn wir uns diese Property in der Dokumentation anschauene gehen, dann stellen wir fest, dass sie ein Objekt der Klasse Brush erwartet. Soweit kannst du mir hoffentlich noch folgen?
    Du probierst jetzt der Property TextBox.Background ein Objekt vom Typ Color zuzuweisen. Wie wir in der Dokumentation erfahren, ist dies eine Struktur und erbt nicht von der Klasse Brush . Color ist somit kein Brush und kann daher an kein Property zugewiesen werden, welches ein Objekt vom Typ Brush erwartet. Wie dies dir eigentlich die Fehlermeldung bereits sagt. Ich hoffe, dass du nachwievor dabei bist.
    David W hat dir bereits einen Hinweis gegeben, dass du womöglich einen SolidColorBrush verwenden solltest. Auch diese Klasse findest du in der Dokumentation. Und aus einem göttlichen Wunder heraus, hat diese Klasse einen Konstruktor, welcher ein Objekt vom Typ Color erwartet.

    Wie du einen Konstruktor aufrufst, weisst du hoffentlich selbst 😉

    Grüssli



  • O.K. das habe ich jetzt so gelöst:
    TextBox1.Background = new SolidColorBrush(Color.FromArgb(125,125,125,125)); Die genauen Farbwerte für grau muss ich noch einstellen und das ganze noch zur Mehrfachverwendung global speichern.

    Danke für die Hilfen!



  • Du solltest auf jeden Fall lernen die Fehlermeldungen zu verstehen. Wenn du das nicht kannst hat das ganze Vorhaben keine Zukunft.



  • David W schrieb:

    Du solltest auf jeden Fall lernen die Fehlermeldungen zu verstehen. Wenn du das nicht kannst hat das ganze Vorhaben keine Zukunft.

    Ich bin schon oft umgestiegen oder migriert auf neue Plattformen, Betriebssysteme, Compiler, SDKs, IDEs, ... oder musste das machen. Das schreckt mich also wenig. Was man kennt nimmt man mit, alles weitere lernt man einfach dazu.

    Ich komme mit WP7 inzwischen zurecht und weiss wo ich für Details suchen oder bei Bedarf fragen muss. Thema hier erledigt! daddeldu! :p



  • Thema hier erledigt!

    Das kannst du ruhig betonen. Nachdem du hier schon die Antwort von Dawid W bekommen hast mit dem SolidColorBrush hast du die Frage ja noch in nem anderen Forum gepostet wo dir der Code vorgekaut wurde und dann schreibst du hier noch

    O.K. das habe ich jetzt so gelöst:

    Toll gemacht 🙄


Anmelden zum Antworten