it-swarm.com.de

Ändern Sie den Schaltflächentext nach dem Klicken und ändern Sie ihn nach erneutem Klicken wieder

Ich versuche, den Text eines Buttons jedes Mal zu ändern, wenn er angeklickt wird.

Schaltfläche startet als "ON". Wenn ich das erste Mal auf "AUS" klicke, und wenn ich es erneut anklicke, sollte es wieder auf "Ein" gesetzt werden.

Ich verstehe es, wenn ich auf "AUS" klicke, wenn ich darauf klicke, aber ich bin nicht sicher, wie ich nach einem sekundären Klick suchen kann, damit ich den Text wieder auf "EIN" setzen kann.

Hier ist mein Code bisher:

private void OrdersButton_Click(object sender, EventArgs e)
{
       OrdersButton.Text = " Turn Orders Off";
}
9
Arnulfo Arroyo

Versuchen

    private void OrdersButton_Click(object sender, EventArgs e)
    {
        if (OrdersButton.Text == "Turn Orders On")
        {
            OrdersButton.Text = "Turn Orders Off";
        }
        else if (OrdersButton.Text == "Turn Orders Off")
        {
            OrdersButton.Text = "Turn Orders On";
        }
    }

Hoffe das hilft.

13
Pyromancer

Ich sehe mehrere mögliche Probleme und kann eine objektorientiertere Lösung anbieten: Hinzufügen einer Eigenschaft, die den aktuellen Status aufzeichnet:

    private bool _IsOn;

    public bool IsOn
    {
        get
        {
            return _IsOn;
        }
        set
        {
            _IsOn = value;
            OrdersButton.Text = _IsOn ? "On" : "Off";
        }
    }

verwenden Sie den Event-Handler, um die Eigenschaft einfach umzuschalten:

private void OrdersButton_Click(object sender, EventArgs e)
{
     IsOn = !IsOn;
}

Auf diese Weise ist es einfacher, später auf die Informationen zuzugreifen, und Sie können Ein/Aus durch beliebige Elemente ersetzen - gegebenenfalls auch globalisieren/lokalisieren. Ich denke, es ist eine sehr schlechte Programmierpraxis, wenn der Code vom angezeigten Text abhängt ...

EDIT: Wäre es nicht sinnvoller, eine Checkbox oder einen Togglebutton zu verwenden? Abgesehen davon, dass die visuelle Darstellung anders ist, macht sie das, was Sie von der Box wollen ...

11
Roman Gruber

Testen Sie einfach den aktuellen Text:

OrdersButton.Text = OrdersButton.Text.EndsWith("Off") ? "Turn Orders On" : "Turn Orders Off";

Bearbeiten: Wie Cody in den Kommentaren unten hervorhebt, funktioniert das bei der Lokalisierung nicht. Für etwas, das einfacher zu lokalisieren ist, verwenden Sie ViewState (vorausgesetzt, der ursprüngliche Text besteht aus Bestellungen

bool ordersWereOn = (ViewState["OrdersAreOn"] as bool?) ?? false;
ViewState["OrdersAreOn"] = !ordersWereOn;
OrdersButton.Text = ordersWereOn ? "Turn Orders On" : "Turn Orders Off";
3
MattW

Bitte erstellen Sie einen einfachen Button. Doppelklicken Sie auf die Schaltfläche und der folgende Code wird automatisch generiert.

Schreiben Sie diesen einfachen Code und führen Sie ihn aus .....

Und siehe Magic It IS wird wirklich funktionieren ......

private void button5_Click(object sender, EventArgs e)

{
    if (button5.Text == "Pause")
    {
        button5.Text = "Resume";
        label1.Text = "Yes Pause";
    }
    else
    {
        button5.Text = "Pause";

        label1.Text = "Yes Resume";
    }
}

Bitte haben Sie weitere Fragen, wenden Sie sich bitte an mich ....

Kontaktnummer: 9096713970 ...

1
Yogeshwar Desai

Dafür gibt es viele Möglichkeiten.
Ich würde wahrscheinlich Tag Attribut von Control verwenden, weil:

  1. Es wird in einer Variablenvariablen gespeichert. Sie benötigen keine externen Variablen
  2. Der gesamte Code kann in einer einzigen Methode geschrieben werden
  3. Sie können immer über andere Methoden\Steuerelemente darauf zugreifen

Hier ist der Beispielcode:

private void OrdersButton_Click(object sender, EventArgs e)
{
    bool value = (OrdersButton.Tag as bool?) ?? true;
    OrdersButton.Tag = !value;

    OrdersButton.Text = "Turn Orders " + (value ? "On" : "Off");
}

Sie können auch den Standardwert Tag (true oder false) festlegen und die Überprüfung auf Nullwert entfernen . Sie können auch immer auf diese Weise darauf zugreifen:

public void DoSomeImportantThings()
{
    var areOrdersTurnedOn = (bool)OrdersButton.Tag;
}

Es ist nicht die beste Vorgehensweise - es ist nur eine andere.
Zum Beispiel hat Roman Gruber wahrscheinlich die beste Antwort unter Verwendung von Eigenschaften gezeigt, bei denen eine Textänderungslogik in einen Setter gekapselt ist. 

private void button4_Click(object sender, EventArgs e)
{
    if (button4.Text == "Show Password")
    {
        textBox2.PasswordChar = '\0';
        button4.Text = "Hide Password";
    }
    else
    {
        textBox2.PasswordChar = '*';
        button4.Text = "Show Password";
    }
}
0
Kamal Shetty