VB DLL帮助 - 如何检测发件人

时间:2013-01-20 21:44:45

标签: windows vb.net dll

我创建了一个VB.NET,其中有两个项目。一个是带有一个类文件的类库(比如Clas1.vb),另一个只是一个表单。我将类库引用到另一个表单中,因此我可以在其中使用其方法。但是,Class1.vb无法获取正在使用它的项目。那么我将如何点击Form1上的一个按钮,其背后的代码是ClasslibraryInProject.Class1.MaximizeForm(),Class1.vb知道哪个项目/表单将该命令传递给它,然后执行Windowstate Form1上的FormWindowState.Maximized命令。有什么想法吗?

2 个答案:

答案 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