2016-09-11 9 views
0

Hilfe zum Erfassen eines Mausklicks für eine OvalShape.PowerPacks.Shape.Click-Ereignis kann nicht abonniert werden

Ich habe ein Formular mit einer Picturebox (myPictureBox).

Wenn Sie irgendwo auf myPictureBox klicken, wird myPictureBox.click ausgelöst - OvalShape1 wird an diesem Punkt gezeichnet.

Wenn Sie ein zweites Mal klicken, wird myPictureBox.click ausgelöst und OvalShape2 wird an diesem Punkt gezeichnet.

... außer wenn Sie innerhalb oder auf den Rand von OvalShape1 klicken. Dann ist OvalShape1 ausgewählt und myPictureBox.click wird nicht ausgelöst.

Wie erfasse ich das OvalShape1.Click-Ereignis?

MSDN Code nicht hilfreich: https://msdn.microsoft.com/en-us/library/microsoft.visualbasic.powerpacks.shape.click.aspx

B/C Ich erhalte ein:
Fehler BC30506 Handles-Klausel ein Withevents-Variable in dem enthaltenden Typ oder einen seiner Basistypen definiert erfordert.

Ich habe hardtime, herauszufinden, wie ein Handler zu OvalShape1

Voll Code hinzuzufügen:

Public Class Form1 

Public canvas As New Microsoft.VisualBasic.PowerPacks.ShapeContainer 
Public OvalShape1, OvalShape2, OvalShape3 As New Microsoft.VisualBasic.PowerPacks.OvalShape 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    canvas.Parent = myPictureBox 
    OvalShape1.Parent = canvas 
    OvalShape2.Parent = canvas 
    OvalShape3.Parent = canvas 
End Sub 

Private Sub myPictureBox_Click(sender As Object, e As EventArgs) Handles myPictureBox.Click 

..additional code to start drawing ovalshapes which works fine 

End Sub 


Private Sub OvalShape1_Click() Handles OvalShape1.Click 
    msgbox("you have cicked the OvalShape1") 
End Sub 


End Class 
+0

Ihr Titel ist ein bisschen irreführend, da das Ereignis nicht _nicht ausgelöst_ ist, Sie können es einfach nicht abonnieren. –

Antwort

0

Der Fehler Sie sagt Ihnen genau das bekommen, was los ist. Wann immer Sie die Handles clause verwenden, muss die Variable des Ereignisses, das Sie abonnieren, als WithEvents deklariert werden.

hinzufügen, dass auf Ihre OvalShape# Erklärung und Sie sollten gut gehen:

Public WithEvents OvalShape1, OvalShape2, OvalShape3 As New Microsoft.VisualBasic.PowerPacks.OvalShape 

Auf einer Seite zur Kenntnis, sollten Sie auch die Veranstaltungs-Parameter in Ihrer Event-Handler-Methode sind:

Private Sub OvalShape1_Click(sender As Object, e As EventArgs) Handles OvalShape1.Click 
+0

.... so einfach .. – user3208998

+0

@ user3208998: Manchmal vermisst man, was direkt unter der Nase ist :). Wenn es Ihr Problem gelöst hat, markieren Sie dies als akzeptierte Antwort, indem Sie das Häkchen auf der linken Seite drücken. Dies wird den Antworter mit 15 Reputationspunkten und die Asker 2 Reputationspunkte belohnen. –

Verwandte Themen