2012-01-30 1 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.vbからread.vbから値をパースでき、SelectionChangeCommittedアクティビティを操作できます。私は私の質問は明らかであると思います

....

+0

コードでこれをやっているのですか? VS上のインターフェイスを使用するだけでなく、 – gbianchi

+0

はい、私はこのコードを書く目的を持っています... 基本的に私は、フォームフォームを作成する代わりに、コードを実装してコンボボックスベースのナビゲーションを与える必要がある11フォームWindowsを持っています。 –

答えて

0

あなたは、単純なコンボボックスで制御しているので、私はこのコントロールを作成するために、共通のコードを持つことのポイントが表示されていません。あなたは共通の機能を持つことができますが、それの内容を入力します。

ComboBoxに機能を追加する場合は、独自のコンボボックスクラスを作成します.CompboBoxから継承したExtendedComboBoxをフォームに使用するとします。あなたの既存のコードを変更したくない場合は、あなたのコンボボックスを割り当てることができ

変数にナビゲーションから返され、その後、このコンボボックスからイベントをフック:

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)' .. –

+0

OK、最後の部分を削除しました。最初の部分はまだ成り立っていますが、私はあなたがそのような "読み"クラスを持つべきではないと思います。 –

+0

は、このコードにカスタムコントロールを与える方法を少なくとも知ることができます.. 'Me.Controls.Add(CType(l.Nav()、Control))' 残りは完全に動作しています... ただ必要上記の行または外部クラスファイルからアクセスされているオブジェクトにカスタムコントロールを与える方法を知っている。 read.vbと呼ばれています。私はこれが意味をなさないことを願っています... –

関連する問題