从类创建组合框 - 在VB.net中

时间:2012-01-30 14:38:51

标签: vb.net

我是vb.net的新手,我的查询是:

文件: read.vb

 Friend Function Nav()
    Dim NavBox As New ComboBox()
    NavBox.Size = New System.Drawing.Size(44, 21)
    NavBox.Location = New System.Drawing.Point(135, 305)
    NavBox.DropDownStyle = ComboBoxStyle.DropDownList
    NavBox.Items.Add("1")
    NavBox.Items.Add("2")
    NavBox.Items.Add("3")
    NavBox.Items.Add("4")
    NavBox.Items.Add("5")
    NavBox.Items.Add("6")
    NavBox.Items.Add("7")
    NavBox.Items.Add("8")
    NavBox.Items.Add("9")
    NavBox.Items.Add("10")
    NavBox.Items.Add("11")
    AddHandler (NavBox.SelectionChangeCommitted), AddressOf MSGB
    NavBox.Show()
    Return NavBox
End Function
Public Sub MSGB(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim cb As ComboBox = DirectCast(sender, ComboBox)
    MsgBox(cb.SelectedItem)

End Sub

我正在调用此函数或在mainFrom.vb中显示此组合框

档案: mainFrom.vb

    Dim l As New read
    Me.Controls.Add(CType(l.Nav(), Control))

现在我需要的是访问它的控件,以便我可以将值从 mainFrom.vb 解析为 read.vb 来操作SelectionChangeCommitted活动。

我希望我的问题很清楚......

1 个答案:

答案 0 :(得分:0)

由于你控制的是一个简单的ComboBox,我没有看到使用通用代码来创建这个控件。你可以有一个共同的功能来填充它的内容。

如果你想为ComboBox添加功能,只需创建你自己的组合框类,让我们说继承自ComboBox的ExtendedComboBox,并在你的表单中使用它。

如果您不想更改现有代码,可以将从Nav返回的ComboBox分配给变量,然后从此ComboBox挂钩事件:

Public Class MainForm

'Declare NavBox as a form member
Private NavBox As ComboBox

Public Sub MainForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    'Create NavBox
    Dim read As New read
    NavBox = read.Nav()

    'Hook NavBox event so MainForm knows when selection is changed
    AddHandler NavBox.SelectionChangeCommitted, AddressOf NavBox_SelectionChangedCommited

    'Add NavBox to MainForm
    Me.Controls.Add(NavBox)
End Sub

Public Sub NavBox_SelectionChangedCommited(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim cb As ComboBox = DirectCast(sender, ComboBox)
    'Do something when selection changes.
End Sub

End Class

您还应该删除导航功能中无用的AddHandler行。