Entwickler-Ecke
WinForms - Prozeduren Beenden ohne GUI zu schliessen
A3eXy - Sa 26.12.09 14:56
Titel: Prozeduren Beenden ohne GUI zu schliessen
Hallo zusammen,
Ich habe schon gegoogelt und die SuFu benutzt aber leider nichts brauchbares gefunden.
Hoffe ihr könnt mir helfen :p
Wie's der Titel schon sagt, möchte ich gerne alle Prozeduren beenden ohne das dabei die GUI geschlossen wird, was z.B. bei close() passiert.
Vielen Dank
mfg
Christian S. - Sa 26.12.09 15:02
Hallo und :welcome:!
Was ist denn bei Dir eine Prozedur? :gruebel:
Grüße
Christian
A3eXy - Sa 26.12.09 15:11
Danke für die schnelle Antwort.
Für mich ist eine Prozedur, eine Funktion ohne Rückgabewert...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| public string EingabeUser() { string strUser = Microsoft.VisualBasic.Interaction.InputBox("Geben Sie bitte den Benutzernamen ein: ", "Benutzernamen", "max.mustermann"); if (strUser == "") { } return strUser; } |
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void cmd1u1c_Click(object sender, EventArgs e) { string strUser = EingabeUser(); string strComputer = EingabeComputer();
} |
Okay das erste ist keine Prozedur :s, sry.
Ich möchte einfach wenn jemand bei der Eingabe nichts eingibt oder auf abbrechen klickt, die Prozedur cmd1u1c_Click nicht mehr weitergeführt wird und man direkt wieder auf der GUI ist.
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt
Christian S. - Sa 26.12.09 15:16
Naja, Du kannst ja mir return; auch eine Methode beenden, die keinen Rückgabewert hat. Und dann schaust Du einfach, ob in strUser was drin steht. Wenn nicht, beendest Du die Methode.
JasonDelife - Sa 26.12.09 15:17
In C# gibt es weder Funktionen noch Prozeduren. Es gibt Methoden mit und ohne Rückgabewert. Aber das nur nebenbei.
Wenn eine Methode void (also nichts) zurückgibt, dann kann man die Ausführung auch mit return beenden, genau wie bei Methoden mit Rückgabewert. Man kann nur keinen Rückgabewert angeben.
// EDIT: Christian war schneller :)
Grüße, JasonDelife.
A3eXy - Sa 26.12.09 15:22
Ok wieder was gelernt, danke euch zwei :)
Nur mein Problem ist ja, ich möchte von EingabeUser(), auch die cmd1u1c_Click() beenden.
Wenn ich nur ein Return bei EingabeUser habe dann wird die andere ja genau gleich ausgeführt.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| public string EingabeUser() { string strUser = Microsoft.VisualBasic.Interaction.InputBox("Geben Sie bitte den Benutzernamen ein: ", "Benutzernamen", "max.mustermann"); if (strUser == "") { } return strUser; } |
Moderiert von
Christian S.: Quote- durch C#-Tags ersetzt
JasonDelife - Sa 26.12.09 15:25
Achso. Dann lass das in EingabeUser() so, dass er einfach den String zurückgibt. Prüfe im Click-Handler auf "".
EDIT: Codeschnipsel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| string EingabeUser() { string input = return input; }
void myButton_Click() { string userInput = EingabeUser(); if(string.IsNullOrEmpty(userInput)) return; } |
Grüße, JasonDelife.
A3eXy - Sa 26.12.09 15:30
Es funktioniert :D, Vielen Dank
Aber noch so nebenbei, dürfte return nicht einfach nur einmal in einer Methode vorkommen?
Von wegen schönem Code? :)
Gruss A3eXy
jaenicke - Sa 26.12.09 17:01
A3eXy hat folgendes geschrieben : |
Aber noch so nebenbei, dürfte return nicht einfach nur einmal in einer Methode vorkommen?
Von wegen schönem Code? :) |
Das kann man so oder so sehen, aber das wichtigste ist, dass der Code ordentlich formatiert ist. Denn wenn man nicht mehrere Befehle, in diesem Fall zusammen mit return, in eine Zeile schreibt, übersieht man es auch nicht. Schlecht ist natürlich, wenn man es irgendwo in der Zeile weiter hinten versteckt (hinter einer if-Abfrage zum Beispiel) und niemand mehr durchblickt. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!