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