だてブログ

ねことテクと趣味のブログ

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

初めはこうしたかったのですが、何度やっても動かず。。。 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つ目みたいなやり方)、 もっとスマートなやり方知ってる方いらっしゃったら 教えていくだちゃい。。。。もっと勉強しなきゃなぁ。