none
Button Farbe ändern mit mehreren Klicks RRS feed

  • Frage

  • Hallo Community, 

    leider finde ich dazu keine Antworten im Netz. 

    Ich würde gerne einen Button bei jedem Klick eine andere Farbe zuweisen. 

    Die Grundfarbe ist weiß. Bei dem nächsten Klick soll er Grün werden und danach wieder Rot.  Bei dem nächsten Klick soll es wieder weiß werden und immer so weiter. 

    Danach will ich den Wert abfragen. 

    Weiß soll 0 sein, Grün 2 und Rot 3. 

    Ich hoffe ihr könnt mir weiterhelfen. 

    Danke :) 

    Dienstag, 27. November 2018 17:26

Antworten

Alle Antworten

  • Hi,

    die wichtigste Frage wär erst einmal: Welche Projektart verwendest Du? WinForms? WPF? UWP? ...?

    Wenn die Farben festgelegt sind, würde ich mir eine Klasse erstellen, die deine Werte aufnehmen kann, daraus eine List<T> erstellen und dann bei einem Klick das jeweils nächste Element aus der Liste holen und die Farbe zuweisen.

    Wie genau man das aber nun macht, hängt eben von der Projektart ab, daher bitte erst die obige Frage beantworten.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Dienstag, 27. November 2018 17:37
    Moderator
  • Hy, 

    danke für die schnelle Antwort. 

    Ich nutze Windows Forms App.(.NET Framework)

    Lg 

    Dienstag, 27. November 2018 17:49
  • Hi,
    Hier mal eine Demo, wie man das machen könnte:

    using System;
    using System.ComponentModel;
    using System.Drawing;
    using System.Runtime.CompilerServices;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
      public partial class Form42 : Form, INotifyPropertyChanged
      {
        public Form42()
        {
          InitializeComponent();
        }
    
        private Button btn = new Button() { Text = "Drück mich" };
    
        private void Form42_Load(object sender, EventArgs e)
        {
          this.Controls.Add(btn);
          this.btn.Click += Btn_Click;
          this.btn.DataBindings.Add("BackColor", this, "Farbe");
        }
    
        private void Btn_Click(object sender, EventArgs e) => SetNextColor();
    
        public void SetNextColor()
        {
          farbZustand++;
          if (farbZustand > Farben.GetUpperBound(0)) farbZustand = 0;
          OnPropertyChanged(nameof(Farbe));
        }
    
        private int farbZustand = 0;
        private Color[] Farben = new Color[] { Color.White, Color.Red, Color.Green };
        public Color Farbe { get { return Farben[farbZustand]; } }
    
        public event PropertyChangedEventHandler PropertyChanged;
        internal void OnPropertyChanged([CallerMemberName] string propName = "") =>
          PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
      }
    }


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks


    • Bearbeitet Peter Fleischer Mittwoch, 28. November 2018 07:13 Code korrigiert
    Dienstag, 27. November 2018 20:15
  • leider finde ich dazu keine Antworten im Netz. 

    Wer nicht sucht, kann auch nichts finden.

    Ich würde gerne einen Button bei jedem Klick eine andere Farbe zuweisen. 

    Alleine mit diesem Satz und einem simplen C# dahinter finden sich, mit beliebiger Suchmaschine, zahlreiche Ergebnisse. Unter anderem in diesem Forum: C# / XAML: Button soll Farbe ändern

    Bevor ich mein Problem anderen zur Lösungshilfe zutrage, ist es doch wohl angebracht, mich wenigstens selbst ein wenig zu Informieren.

    Verhaltensregeln C# Forum


    - Gruß Florian


    Mittwoch, 28. November 2018 08:33