2015-11-16 99 views
-1

動態創建標籤的點擊事件VB.NET

對於大學,我創建了一個引力場模擬器,其中顯示了兩個質量以及它們將經歷的引力的大小和方向。對於質量體,我使用動態創建的橢圓形,並且這些橢圓形每個上都有一個標籤來顯示質量。這些橢圓形和標籤存儲在列表數組中。

我需要能夠拖放這些物體。對於橢圓形我使用的是If OvalShape.ContainsFocus,但由於標籤將位於這些橢圓形的頂部,所以我需要某種方式來測試鼠標是否貼在標籤上。我曾嘗試使用事件處理程序,但我得到一個錯誤「點擊不是一個事件system.collections.listarray」此代碼AddHandler labelArray.Click, AddressOf Me.labelArray_Click

所以我的問題是, 有沒有一種方法來測試是否屬於一個listarray標籤有被點擊並且數組中的哪個標籤已被點擊。在此先感謝

+0

你需要處理程序掛接到一個的控件*內*數組 – Plutonix

+0

你會怎麼做? – Quad

+0

你確定錯誤信息是正確的嗎? 'listarray'不是'ArrayList'?添加處理程序,當你創建標籤 – Plutonix

回答

1

您需要將事件處理程序添加到每個標籤陣列中

For Each l As Label In labelArray 
AddHandler l.Click, AddressOf myClickHandler 
Next 

然後在處理函數:

Private Sub myClickHandler(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Dim clickedLabel As Label = DirectCast(sender, Label) ' Cast the sending object into a Label object 
    ' then do whatever you want with the label such as get it's text and show it in a message box: 
    MessageBox.Show("Label text Clicked was: " & clickedLabel.Text) 
End Sub 
+0

工作!謝謝你:D – Quad

+0

是的,請記住,當你添加新的標籤到數組中時,你會希望確保將處理程序添加到它們的click事件中。此代碼只會處理當前在數組中的那些代碼。 –

+0

那麼如果我想知道陣列中的哪個標籤被點擊了,我該怎麼辦? – Quad

相關問題