-1

VB.NETを作成しましたが、その中に2つのプロジェクトがあります。1つは1つのクラスファイル(たとえばClas1.vb)を持つクラスライブラリで、もう1つは単なる形式です。クラスライブラリを別の形式で参照して、そのメソッドを使用できるようにしました。ただし、Class1.vbは、それを使用しているプロジェクトを取得できません。では、Form1のボタンがクリックされた場所をどのように処理すればよいでしょうか。その背後にあるコードは、ClasslibraryInProject.Class1.MaximizeForm()であり、Class1.vbは、どのプロジェクト/フォームがそのコマンドを渡したかを認識し、Windowstateを実行します。 =Form1のFormWindowState.Maximizedコマンド。何か案は?

4

2 に答える 2

0

1 つの方法は、コンストラクターに親が関連付けられていることを要求するようにすることです。

Public Class Class1
    Private _parent as Form
    Public Sub New (form as Form)
        _parent = form
    End Sub
    '...
End Class

フォームを作成するときに、コンストラクターでそのプロパティを設定します。

'...
Dim myClass1 as New Class1 (Me) ' The parent form
'...

次に、Class1 内でそのプロパティをテストできます。

Public Class Class1
    Private _parent as Form
    Public Sub New (form as Form)
        _parent = form
    End Sub
    Public Sub DoStuff
        If _parent.Name = "whatever" Then
        '...
        End If
    End Sub

End Class

これは非常に標準的なもので、.Net フレームワーク内のダイアログ ボックスとメッセージ ボックスから同様の動作が見られます。

親フォームの名前に基づいてこれを行うのは少し嫌です。しかし、それは別の日の議論です;)

于 2013-01-20T23:16:23.567 に答える
0

これを行う少し簡単な方法は、フォームを MaximizeForm 関数に渡すだけです。

Public Class Class1
    Public Sub MaximizeForm(sender as Object)
        Select Case sender.Name
        Case "Form1"
            ' cast the sender as a form and maximize it
            Directcast(sender,Form).WindowState = FormWindowState.Maximized
        Case Else
            ' ...
        End Select
    End Sub
End Class
于 2013-01-20T23:26:40.347 に答える