Frage von ElferKern, 50

C# Windows Forms Disable Button wenn 2 Variablen ungleich sind?

hiho gf.net community

Ich hab eine Forms-Anwendung erstellt und will einen Button deaktivieren, wenn 2 Resultate in 2 Variablen (checksumme und inteingabe) nicht gleich sind

while (checksumme != inteingabe)        
{
        ausgabe.Enabled = false;
}

Ich habe noch nie etwas mit Forms gemacht davor, nur mit der Konsolenanwendungen - daher weiss ich nicht genau wie ich diese Schleife die Resultate dauernd überprüfen lassen kann. Muss ich dazu ein Event verwenden? wenn ja welches und wie?

Antwort
von ccman32, 32

An wie vielen Stellen im Programm ist es denn möglich, dass sich der Wert einer der zwei Variablen ändert? Der performanteste Ansatz wäre dann, nach jeder möglichen Änderung diese Abfrage einmal auszuführen, bestenfalls in eine eigene Funktion ausgelagert und nicht immer copy&pasted. Einen guten Ansatz dazu findest du in dem stackoverflow Link aus der Antwort von magicced01. Zu beachten ist auch, dass mit deiner Abfrage der Button nur disabled und nicht wieder enabled werden kann. Verwende besser ausgabe.Enabled = checksumme == inteingabe;

Antwort
von Willibergi, 27

Der Ausdruck

while (checksumme != inteingabe)        
{
        ausgabe.Enabled = false;
}

ist schwachsinnig.

Solange checksumme ungleich inteingabe ist, wird enabled durchgängig auf false gesetzt.

Einen Link hast du bereits bekommen.

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.

LG Willibergi

Antwort
von KnorxyThieus, 4
Muss ich dazu ein Event verwenden? wenn ja welches und wie?

Ja, das ist der korrekte Ansatz! :-)

Insofern du Visual Studio verwendest, kannst du in den Eigenschaften des Objektes, also des Eingabefeldes, indem du oben auf so ein Blitz-Symbol klickst, alle möglichen Events einsehen. Verwendest du ein normales Edit? Dann brauchst du höchstwahrscheinlich das Event

TextChanged

. Einen Doppelklick ausführen und den Code eintragen.

Die Speicherung von

inteingabe

 erübrigt sich dann übrigens, du kannst einfach in der

OnTextChanged

-Methode eintragen:

ausgabe.Enabled = (checksumme == Int32.Parse(Edit1.Text));

Vorausgesetzt, checksumme ist vom Typ int und dein Edit heißt Edit1.

Immer, wenn der Text nun geändert wird, wird diese Methode aufgerufen.

Ich hoffe, ich konnte dir helfen :) Frag gerne nochmal! :-)

MfG,
KnorxThieus (♂)

Antwort
von magicced01, 34

http://stackoverflow.com/questions/5842339/how-to-trigger-event-when-a-variables... siehe hier

Kommentar von KnorxyThieus ,

Ich nehme mal an, dass der Wert von inteingabe nichts anderes ist als der umgewandelte Text eines Edits - dann kann man es auch einfacher über OnTextChanged realisieren ... :)

Keine passende Antwort gefunden?

Fragen Sie die Community