Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB2005, VB2008 | 18.11.09 |
Aufrufende Prozedur aus einer Sub/Function heraus ermitteln Mit Hilfe der StackTrace-Klasse lässt sich sehr einfach die Prozedur ermitteln, die eine andere Prozedur/Funktion aufgerufen hat. | ||
Autor: Dieter Otter | Bewertung: | Views: 21.476 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute zeigen wir Ihnen, wie Sie "herausfinden" können, von welcher Prozedur heraus die aktuelle Prozedur/Funktion aufgerufen wurde.
Imports System.Reflection
''' <summary> ''' Gibt den Namen der aufrufenden Prozedur zurück. ''' </summary> Public Function GetCallingProc() As String Dim Trace As New StackTrace() Try Return Trace.GetFrame(2).GetMethod().Name Catch ex As Exception Return "" End Try End Function
Anwendungsbeispiel:
Es gibt zwei TextBox-Elemente auf der Form, die im TextChanged-Event jeweils die gleiche Prozedur aufrufen. Innerhalb dieser Prozedur möchten Sie wissen, aus welchem TextBox_Changed Ereignis der Aufruf erfolgte:
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles TextBox1.TextChanged Call Proc1() End Sub Private Sub TextBox2_TextChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles TextBox2.TextChanged Call Proc1() End Sub
Sub Proc1() ' Aus welcher Prozedur heraus wurde Proc1 aufgerufen? MsgBox(GetCallingProc()) End Sub