画面遷移&値渡しの試行錯誤

初めはこうしたかったのですが、何度やっても動かず。。。
Module1.vb - 共通クラス

Public Module Module1  
 ' 諸事情で拡張メソッド使ってます。  
    <System.Runtime.CompilerServices.Extension()>  
    Public Sub TransitionForm(Form1 As Form, ByVal ParamArray args() As Object)  
        args(0).show()  
        My.Application.ApplicationContext.MainForm = args(0)  
        arg(0)._passValue = args(1)  
        Form1.Hide()  
    End Sub  
End Module  

Form1.vb - 遷移前画面

Public Class Form1  
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click  
        Me.TransitionForm(Form2, "test")  
    End Sub  
End Class  

Form2.vb - 遷移後画面

Public Class Form2  
    Public Shaared _passValue As Object  
    Sub New(passValue As Object)  
        InitializeComponent()  
        Label1.Text = _passValue.ToString()  
    End Sub  
End Class  

結局こうやったら普通に動きました。はぁ(*´Д`)(なんだかなぁ)

Module1.vb - 共通クラス

Public Module Module1  
 ' 諸事情で拡張メソッド使ってます。使わなくても行けます。  
    <System.Runtime.CompilerServices.Extension()>  
    Public Sub TransitionForm(Form1 As Form, ByVal ParamArray args() As Object)  
        args(0).show()  
        My.Application.ApplicationContext.MainForm = args(0)  
        Form1.Hide()  
    End Sub  
End Module  

Form1.vb - 遷移前画面

Public Class Form1  
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click  
        Me.TransitionForm(New Form2("test"))  
    End Sub  
End Class  

Form2.vb - 遷移後画面

Public Class Form2  
    Sub New(passValue As Object)  
        InitializeComponent()  
        Label1.Text = passValue  
    End Sub  
End Class  

共通クラスにメソッドを書くやり方で(1つ目みたいなやり方)、
もっとスマートなやり方知ってる方いらっしゃったら
教えていくだちゃい。。。。もっと勉強しなきゃなぁ。