2012-01-30 38 views
0

進出口新的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 

和IM調用這個函數或 mainFrom.vb

Dim l As New read 
    Me.Controls.Add(CType(l.Nav(), Control)) 
:在mainFrom.vb

文件顯示此組合框

現在,我需要的是,它控制訪問,所以我可以從mainFrom.vbread.vb來操縱SelectionChangeCommitted活動parss值。

我希望我的問題是明確....

+0

你有一個porpuose在代碼中做這一切?而不是隻使用VS上的接口? – gbianchi 2012-01-30 15:37:23

+0

是的,我確實有一個目的,編寫所有這些代碼... 基本上我有11窗體窗口,我需要通過實現代碼,而不是創建每個單一形式的基於組合框的導航。 – 2012-01-30 15:47:24

回答

0

既然你控制是一個簡單的組合框,我看不出有共同的代碼來創建這個控制點。你可以有一個通用的函數來填充它的內容。

如果您想爲ComboBox添加功能,只需創建您自己的組合框類,例如從ComboBox繼承的ExtendedComboBox,然後在窗體中使用它。

如果你不想改變現有的代碼,你可以將你的組合框從導航返回到一個變量,然後掛接到事件從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 

你也應該刪除無用Nav函數中的AddHandler行。

+0

Ops對不起,我的錯誤... 這件作品實際上是我的白癡試用和錯誤試用的一部分......'NavBox.Controls.Add(NavBox)'.. – 2012-01-30 16:13:02

+0

行,刪除了最後一部分。第一部分依然如此,我認爲你不應該有這樣的「閱讀」班。 – 2012-01-30 16:21:24

+0

可以至少知道如何給這段代碼自定義控制.. 'Me.Controls.Add(CType(l.Nav(),Control))' 因爲其餘的工作完美... 只需要瞭解如何爲上面的行或對象提供自定義控件,該行或對象是從外部類文件訪問的。叫read.vb我希望這是有道理的... – 2012-01-30 16:36:13