Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB2005, VB2008 | 18.11.09 |
![]() Mit Hilfe der StackTrace-Klasse lässt sich sehr einfach die Prozedur ermitteln, die eine andere Prozedur/Funktion aufgerufen hat. | ||
Autor: ![]() | Bewertung: ![]() ![]() ![]() ![]() ![]() | Views: 22.385 |
https://www.tools4vb.com | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | ![]() |
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