-1

我创建了一个 VB.NET,里面有两个项目。一个是带有一个类文件的类库(比如说 Clas1.vb),另一个只是一种形式。我将 Class library 引用到另一种形式中,因此我可以在其中使用它的方法。但是,Class1.vb 无法获取正在使用它的项目。那么我将如何处理单击 Form1 上的按钮的位置,并且它背后的代码是 ClasslibraryInProject.Class1.MaximizeForm() Class1.vb 知道哪个项目/表单将该命令传递给它,然后它执行 Windowsstate = FormWindowState.Form1 上的最大化命令。有任何想法吗?

4

2 回答 2

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 回答
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 框架内的对话框和消息框中看到类似的行为。

根据父表单的名称来做这件事有点恶心。但这是另一天的讨论;)

于 2013-01-20T23:16:23.567 回答