我是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活动。
我希望我的问题很清楚......
答案 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行。