2016-05-17 10 views
0

データベースを通過し、データベースの各エントリに関連するラベルを含むパネルを追加することによって、多くのパネルをFlowLayoutPanelに追加します。どのパネルがクリックされたときに何が起こるかをコード化できるようにする必要がありますが、どのように動かすことはできません。コードを使用したオブジェクトのイベントとプロパティの使用

これは私がパネル

For i As Integer = 0 To IDs.Count - 1 
    Dim testPanel As New Panel With 
     { 
      .Height = 50, 
      .Width = 140, 
      .BackColor = Blue, 
      .Name = "rPanel" + i.ToString 
     } 
    FlowLayoutPanel.Controls.Add(testPanel) 
Next 

答えて

1

を生成するために使用するコードですが、このように、MouseClickイベントにイベントハンドラを追加します。

For i As Integer = 0 To IDs.Count - 1 
    Dim testPanel As New Panel With 
     { 
      .Height = 50, 
      .Width = 140, 
      .BackColor = Blue, 
      .Name = "rPanel" + i.ToString 
     } 
    AddHandler testPanel.MouseClick, AddressOf PanelMouseClick 
    FlowLayoutPanel.Controls.Add(testPanel) 
Next 

は、次にイベントのハンドラのサブを作成します。 Like ...

Private Sub PanelMouseClick(sender As Object, e As MouseEventArgs) 
    MessageBox.Show("Mouse Clicked") 
End Sub 

AddHandlerあなたが処理したいイベントを設定することができます。 AddressOfを使用すると、コールで前記イベントを処理するサブを設定できます。サブシグネチャが不明な場合は、Visual Studioを使用して、正しいシグネチャを持つサブサブを作成しません。

+0

見事に働いたこと。ありがとう。フォローアップとして、そのパネルにコントロールとしてラベルを追加すると、そのラベルがクリックされたときに同じサブを実行できるようにする方法がありますか? – OtherBarry

+0

アドレッシングしているイベントのシグネチャが同じ場合、複数のイベントを1つのハンドラに適用することができます。したがって、同じクリックイベントハンドラをラベルに追加するだけで済みます。シグネチャが異なるイベントを使用している場合は、コードロジックを別のメソッドに抽出し、特定のイベントハンドラから呼び出します。 – Malcor

0

ハンドラをパネルに追加してから、もう一方のパネルに追加してください。

AddHandler testPanel.Click, AddressOf Method 
FlowLayoutPanel.Controls.Add(testPanel) 

値として、送信側とのEventArgsを持つ新しいメソッドを追加します。

Private Sub Method(sender As Object, e As EventArgs) 
    'Your Code 
End Sub 
関連する問題