VB.Net将多个表单处理到面板

时间:2016-12-30 22:11:29

标签: vb.net forms

我已经尝试找到答案,但找不到回答这个问题的答案。

我有一个包含两个面板的主表格。在主表单中,我正在尝试编写一个子例程来处理将表单加载到其中一个面板中。

一个面板始终包含相同的表单,适用于此的代码为:

'Configure Toolbar Import
Dim toolbarHandler As _pnl_header = New _pnl_header()
toolbarHandler.Size = pnlHeader.Size
toolbarHandler.TopLevel = False
pnlHeader.Controls.Add(toolbarHandler)
toolbarHandler.Show()

该面板按预期成功显示了_pnl_header形式。

第二个面板将根据用户输入更改显示的形式,因此我不想为每个可能性编写上述代码,而是希望有一个Public Sub来处理它们...

我开始编写一个子线:

Public Sub LoadContentPanel(WhichForm As Form)
    Try

        Dim contentHandler As WhichForm = New WhichForm()
        contentHandler.Size = pnlContent.Size
        contentHandler.TopLevel = False
        pnlContent.Controls.Add(contentHandler)
        contentHandler.Show()
    Catch ex As Exception
        MsgBox("Unable to Handle Content Panel Change. Error: " & ex.Message, vbOKOnly + vbCritical, "Load Error")
    End Try
End Sub

然而,由于' WhichForm'没有定义 - 如何最好地纠正这个?还是有更好的选择?

谢谢

1 个答案:

答案 0 :(得分:0)

如果不进入你正在做的事情,我可以解释错误的来源。

在此声明WhichForm

类型的参数变量Form
Public Sub LoadContentPanel(WhichForm As Form)
. . . . . 

下一个申报行中的代码不正确。 WhichForm是变量而不是类型。因此

Dim contentHandler As WhichForm = New WhichForm()

As WhichForm无效。因为在As之后你需要一个类型名称。如果你做了

Dim contentHandler As Form = New Form()

它会起作用。

您似乎只需删除Dim contentHandler As WhichForm...并将参数WhichForm重命名为contentHandler