Bool-Wert für Aufrufende Methode
-
Hallo,
bin noch relativ neu in der Programmierung, deshalb kann es sein dass meine Frage etwas komisch ist, aber da ich dazu hier nicht wirklich etwas gefunden habe, frage ich einfach mal.
Meine Frage ist: Ich möchte in einer Methode eine andere Methode aufrufen. Wenn ich nun in der anderen Methode bin, möchte ich prüfen woher der Aufruf für diese Methode kam. So dass ich sagen kann:if (ersteMethode.dieseMethodeAufgerufen){...}
else if (zweiteMethode.dieseMethodeAufgerufen) {...}Ich denke man kann verstehen was ich möchte. Es muss natürlich nicht unbedingt so gehen, Hauptsache ist, dass ich mein Problem gelöst bekomme.
Ich denke jetzt wisst Ihr auch wieso ich nichts dazu gefunden habees ist nämlich nicht leicht, diese Frage in einene Satz zu packen (zumindest für mich :))
-
Ich denke Du könntest dies mit einem Parameter realisieren. Je nachdem wo Du die Methode aufrufst, gibtst Du einen anderen Parameter mit.
Ist nach meiner Meinung nicht die schöneste Art, sollte aber funktionieren. Eventuell habe ich Dein Problem auch falsch verstanden.
-
Danke erst mal für deine schnelle Antwort.
Nein, ich denke Du hast es schon richtig verstanden.
Du meinst also ich sollte eine überladene Methode erstellen? Das ist sicherlich möglich und würde sicher auch klappen. Ich habe nur das Problem, dass die Methode die ich aufrufen möchte, eine WindowsForms Methode ist und die ist nicht so einfach zu überladen, zumindest für mich Anfänger.
Vieleicht hat jemand noch eine Möglichkeit die ihm einfällt? Ich bin für jede Antwort dankbar.
-
Was meinst du mit WindowsForms Funktionen?
-
Du meinst du hast z.B. ne Mausklick-Funktion und möchtest wissen wer die Mausklick-Funktion aufgerufen hat (z.B. ausgelöst durch ne Windows-Message oder von dir selbst) ?
-
Hi,
ja ich meine genau das was greeky geschrieben hat. Habe mich da wohl ein bisschen falsch ausgedrückt, aber greeky hat es genau richtig verstanden.
-
Hast du die selbe Methode an mehreren events angemeldet? Falls ja, melde unterschiedliche Methoden an, die können dann die Hauptmethode mit Parametern aufrufen. Falls das nicht das Problem ist, dann zeig mal etwas Code.
-
Du hast doch den sender als Parameter drin. Der hat dir den Mausklick ausgelöst. Ist bei jedem Eventhandler im Windows Forms Bereich so.
-
private void wahlRechteck_CheckedChanged(object sender, EventArgs e) {void buttonBerechnen_Click(sender, e)} private void wahlDreieck_CheckedChanged(object sender, EventArgs e) {void buttonBerechnen_Click(sender, e)} private void buttonBerechnen_Click(object sender, EventArgs e) { if ([b]der Aufruf kommt von wahlRechteck...[/b] :D { R.RechteckBreite = (double.Parse(WertBreite.Text)); R.RechteckHöhe = (double.Parse(WertHöhe.Text)); } else if ([b]der Aufruf kommt von wahlDreieck...[/b]) :D { R.Dreieck = double.Parse(WertSeite.Text)); R.Dreieck = double.Parse(WertHöhe.Text)); } }
Ich hoffe man kann erkennen, was ich da will. Wie gesagt ich bin noch Anfänger (besonders in Windows Forms) und deshalb ist das vieleicht nicht logisch was ich da versuche, aber dann sagt einfach wie Ihr es lösen würdet. Wie schon gesagt bin für alles offen.
-
if(sender is wahlRechteck) { ... } else if(sender is wahlDreieck) { ... }
-
Danke für die Antwort. Diese Lösung finde ich für mich, perfekt. Leider, geht sie bei mir nicht. Ich bekomme einen Compilerfehler
Fehler 1 "WindowsApplication1.Form1.buttonBerechnen_Click(object, System.EventArgs)" ist ein(e) "Methode", wird aber wie ein(e) "Typ" verwendet.
Was habe ich falsch gemacht.
if (sender is buttonBerechnen_Click) { textBoxErgebnis.Text = (R.RechteckFläche).ToString(); } else if (...) {...}
-
Machs so wie ~Th gesagt hat. Du prüfst ob sender die Referenz von dem Button ist den du willst:
da sender aber nen object ist müsstest du glaub ich noch casten, also sowas:
if(sender as Button) == wahlRechteck
bzw.
if(sender as Button) == wahlDreieck
-
ich glaub der fehler ligt auch noch in der tatsache das "sender" nicht buttonBerechnen_Click sein kann da dies die methode ist. sender ist immer das objekt das das event abfeuert, sprich sender ist der button(buttonname) z.b.
-
Danke,
an alle die mir geholfen haben mein (wahrscheinlich nicht ganz so bedeutendes Probelem) zu lösen.
Habe es jetzt so gelöst wie es von ~Th gezeigt worden ist und von Zwergli für mich angepasst worden ist. Habe dann auch den Fehler den Jack30lena angesprochen hat beseitigt.
Nur musste ich die Klammer nach "wahlRechteck" bzw. "wahlDreieck" setzen. Ansonsten kann ich mich nur für Eure Hife bedanken.