Autor Beitrag
A3eXy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Sa 26.12.09 14:56 
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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 26.12.09 15:02 
Hallo und :welcome:!

Was ist denn bei Dir eine Prozedur? :gruebel:

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
A3eXy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: Sa 26.12.09 15:11 
Danke für die schnelle Antwort.

Für mich ist eine Prozedur, eine Funktion ohne Rückgabewert...


ausblenden 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;
        }

ausblenden 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 user profile iconChristian S.: Quote- durch C#-Tags ersetzt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
JasonDelife
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81

Windows 7 Professional
C# (Visual Studio 2008 Professional), Java (NetBeans IDE 6.7)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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.

ausblenden 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 == "")
            {
                //Abbruch von EingabeUser() und cmd1u1c_Click()
            }
            return strUser;
        }


Moderiert von user profile iconChristian S.: Quote- durch C#-Tags ersetzt
JasonDelife
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81

Windows 7 Professional
C# (Visual Studio 2008 Professional), Java (NetBeans IDE 6.7)
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 26.12.09 17:01 
user profile iconA3eXy hat folgendes geschrieben Zum zitierten Posting springen:
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. ;-)