2012-03-31 34 views
1

だから私はいくつかの戦いのためにこれを頭に浮かべるために苦労していたし、いくつかの助けが必要です。動的にvb.netの動的パネルにイベントハンドラを追加する

For i as integer 1 to dt.rows.count 
    dim subpan as new panel 
    *Code for creating panel" 
Next 

問題、私はをクリックし、を含めて、それぞれにイベントハンドラを追加できるようにする必要があり、MouseEnterイベントとmouseLeave:

ので、私は

例を生成している一連のパネルを持っていますしかし、私はどのようにそれらがアクセスされ、識別されることができるように各パネルのインデックスを作成するのか分かりません。私は、プロパティを使用してみましたが、それは動作していないか、私は間違ってやっていた。

ありがとうございました。

答えて

2

あなたはAddHandler機能します:

For i as integer 1 to dt.rows.count 
    dim subpan as new panel 
    subpan.ID = "subpan1" ' REQUIRED AND MUST BE UNIQUE 
    AddHandler subpan.Click, AddressOf subpan1_Click ' CLICK EVENT HANDLER ALSO UNIQUE 
    ' ETC. 
Next 

Private Sub subpan1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    ' CODE TO HANDLE CLICK EVENT 
End Sub 

を、私はあなたがすべて同じイベントハンドラにイベントをルートをクリックしてできることを言及する必要があり、彼らは各パネルは、カスタム・ロジックを必要としない限り、ユニークである必要はありません。

+0

私はsubpan.IDとIDはIDではありませんパネルのプロパティ – Ardenexal

+0

私の謝罪、私は私の頭の上からそれをしました。これはNameプロパティかもしれません。 – mgnoonan

+0

yeh iveそれを行うだけで、シリーズの最初のものにそれを割り当てることです – Ardenexal

0

あなたはハンドラを追加するためにAddHandlerを使用することができます。

For i As Integer = 1 To dt.Rows.Count 
    Dim subpan As New Panel() 

    'Code for creating panel 

    'Attach events: 
    AddHandler subpan.Click, AddressOf Some_Listener 
    'etc. 
Next 

その後、Panelsender引数をキャストして、イベントハンドラの現在のPanelにアクセスすることができます。

関連する問題