我创建了一个VB.NET,其中有两个项目。一个是带有一个类文件的类库(比如Clas1.vb),另一个只是一个表单。我将类库引用到另一个表单中,因此我可以在其中使用其方法。但是,Class1.vb无法获取正在使用它的项目。那么我将如何点击Form1上的一个按钮,其背后的代码是ClasslibraryInProject.Class1.MaximizeForm(),Class1.vb知道哪个项目/表单将该命令传递给它,然后执行Windowstate Form1上的FormWindowState.Maximized命令。有什么想法吗?
答案 0 :(得分:0)
一种方法是让构造函数要求父元素与它相关联:
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框架内的对话框和消息框中看到类似的行为。
根据父表单的名称执行此操作有点令人厌恶。但那是另一天的讨论;)
答案 1 :(得分: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