I failed to ask my entire question on part 1. Although codeorder gave me the answer I needed I have one more part which I will put in bold.
I have 3 forms: Form1, Form2 and Form99. Form1 and Form2 both call Form99. What statement(s) does Form99 use to determine which form called it (Form1 or Form2).
Which form called me?
Form1 and Form2 have several textboxes - Let's just say TextBox1 and TextBox2. By using the field sNameOfForm that codeorder said to use I want to use sNameOfForm to access TextBox1 and Textbox2 .text property using sNameOfForm for the Form Name.
Instead of coding in Form99: MsgBox(Form1.TextBox1.Text) MsgBox(sNameOfForm.TextBox1.text)
In other words I want to use the Form Name (sNameOfForm) that was supplied to Form99 and access the textboxes on either Form1 or Form2 without hardcoding the form name.
Form99.Show(Me) ' Me i.e. owner is now Form1
Form99.Show(Me) ' Me i.e. owner is now Form2
To find out who's the caller (i.e. owner), read the owner property:
Private Sub Form99_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Set form's caption to show the owner
' Here the 'Me' refers to Form99
Me.Text = Me.Owner.Text & " is the owner (caller) of the Form99"
Public Class Form99
Public selForm As Form = Nothing
Private Sub frm99_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.TextBox1.Text = CType(selForm.Controls("TextBox1"), TextBox).Text
Me.TextBox2.Text = CType(selForm.Controls("TextBox2"), TextBox).Text