2016-05-25 5 views
1

Ich möchte eine Umschaltfläche erstellen, aber es bleibt bei On. Wie schalte ich die Taste von ein auf aus.Ein Aus-Taste bleibt bei On

private void Form2_Load(object sender, EventArgs e){ 

    Button button = new Button(); 
    button.Location = new Point(200, 30); 
    button.Text = "Off"; 
    this.Controls.Add(button); 

    if (button.Text != "On") 
    { 
     button.Text = "On"; 
     button.BackColor = Color.Green; 
    } 
    else if (button.Text == "On") 
    { 
     button.Text = "On"; 
     button.BackColor = Color.Red; 
    } 
} 

Antwort

1

Sie setzen den Text immer auf On. Ändern Sie Ihren sonst Block:

else if (button.Text == "On") 
{ 
    button.Text = "Off"; // here !!! 
    button.BackColor = Color.Red; 
} 

Oder diese Lösung verwenden, um eine ToggleButton zu erstellen: ToggleButton in C# WinForms

+0

ich es "off "" bleibt nach wie vor bei On" geändert haben. – discable10

2

Sie müssen den Code setzen die Schaltfläche Auftritt in den Click Ereignishandler dieser Schaltfläche zu ändern:

private void Form2_Load(object sender, EventArgs e){ 

    Button button = new Button(); 
    button.Location = new Point(200, 30); 
    button.Text = "Off"; 
    this.Controls.Add(button); 

    // subscribe to the Click event 
    button.Click += button_Click; 
} 

// the Click handler 
private void button_Click(object sender, EventArgs e) 
{ 
    Button button = sender as Button; 
    if (button == null) return; 

    if (button.Text != "On") 
    { 
     button.Text = "On"; 
     button.BackColor = Color.Green; 
    } 
    else if (button.Text == "On") 
    { 
     button.Text = "Off"; 
     button.BackColor = Color.Red; 
    } 
} 

Und beachten Sie, dass Sie in Ihrem else Block den falschen Text setzen. Ändern Sie es in "Off".

+0

Es hat funktioniert, vielen Dank! – discable10

+0

@ discable10 dann sollten Sie dies als die Antwort markieren ... –

0

Es sollte wie folgt sein: Schaffung + Zustand auf Klick zu ändern:

private void Form2_Load(object sender, EventArgs e){ 
    // Initial creation 
    Button button = new Button() { 
     Location = new Point(200, 30), 
     Text = "Off", 
     BackColor = Color.Red, 
     Parent = this, 
    }; 

    // Click handle, let it be lambda 
    // Toggle on click (when clicked change On -> Off -> On ...) 
    button.Click += (s, ev) => { 
     Button b = sender as Button; 

     if (b.Text == "On") { 
     // when "On" change to "Off" 
     b.Text = "Off"; 
     b.BackColor = Color.Red; 
     } 
     else { 
     b.Text = "On"; 
     b.BackColor = Color.Green; 
     } 
    }; 
    } 
Verwandte Themen