Connaitre le nom de la fonction qui l'a appelé
Bonjour a toutes et tous,
Vous allez d'abords me dire : as tu déjà cherché sur le net ?
Je vous dirais bien sur, je préfère essayer de chercher par mes moyens avant de venir demander de l'aide.
Mais la je vous avoue que je patauge un peux.
En effet, je voudrais savoir s'il existe un moyen de connaitre le nom de la fonction qui en appel une autre.
Cela ne me parait pas claire, je m'explique :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
sub SUB1()
SUB3()
End Sub
sub SUB2()
SUB3()
End sub
sub SUB3()
SI appel par SUB1 ALORS
SI appel par SUB2 ALORS
End sub |
Merci de votre aide
Et pardonné moi si la réponse a déjà été donné ou si je suis censé la connaitre.
caller of a method,nom de l'appelant
bonjour
tu veux connaitre le nom de l'appelant ,quova dis?
oui tu peux acceder au frame la pile:
voici un code exhaustif avec 2 formes:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
'1er forme appele ses methodes internes
'appele les methodes d'un autre forme
Imports System.Reflection
Public Class Form1
Private maForme2 As Form2 = New Form2
Private Sub btnExecuteMethode1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExecuteMethode1.Click
Call Method1()
End Sub
Public Sub Method1()
Dim n As Integer = 5
n = n + 1
Me.TextBox1.Text = n.ToString & vbCrLf
Dim stTraceFrame As StackFrame = New StackFrame(1)
Dim methode As MethodBase = stTraceFrame.GetMethod
MessageBox.Show("Objet : " & methode.DeclaringType.FullName & " Appele par Sub : " & methode.Name)
Me.TextBox3.Text = ""
Me.TextBox3.Text = "Objet : " & methode.DeclaringType.FullName & " Appele par Sub : " & methode.Name & vbCrLf
Call Method2()
End Sub
Public Sub Method2()
Dim n As Integer = 3
Dim d As Double = 125.45
d = n * d
Me.TextBox2.Text = d.ToString
Dim stTraceFrame As StackFrame = New StackFrame(1)
Dim methode As MethodBase = stTraceFrame.GetMethod
MessageBox.Show("Objet Appelant : " & methode.DeclaringType.FullName & " Appele par Sub : " & methode.Name)
Me.TextBox3.Text = Me.TextBox3.Text & "Objet Appelant : " & methode.DeclaringType.FullName & " Appele par Sub : " & methode.Name
End Sub
Private Sub btnExecuteMethode2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExecuteMethode2.Click
maForme2.Method3()
maForme2.Show()
End Sub
End Class
'2eme forme
Imports System.Reflection
Public Class Form2
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
End Sub
Public Sub Method3()
Dim n As Integer = 0
Dim d As Double = 0
d = n * 125.45
Me.TextBox1.Text = d.ToString
Dim stTraceFrame As StackFrame = New StackFrame(1)
Dim methode As MethodBase = stTraceFrame.GetMethod
MessageBox.Show("Objet Appelant : " & methode.DeclaringType.FullName & " Appele par Sub : " & methode.Name)
Me.TextBox2.Text = Me.TextBox2.Text & "Objet Appelant : " & methode.DeclaringType.FullName & " Appele par Sub : " & methode.Name
End Sub
End Class |
bon code....