您可以讓一個事件引發另一個事件。讓我們開始與使用的GraphicsPath存儲形狀和油漆它的基本方式:
Imports System.Drawing.Drawing2D
Public Class Form1
Private Shape As GraphicsPath
Public Sub New()
InitializeComponent()
Shape = New GraphicsPath()
Shape.AddEllipse(0, 0, 200.0F, 200.0F)
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
e.Graphics.DrawPath(Pens.Black, Shape)
MyBase.OnPaint(e)
End Sub
End Class
現在要添加一個事件讓一些其他的類可以看到被點擊的形狀:
Public Event ShapeClick As EventHandler
你寫的是提高標準的.NET事件養模式的情況下,部分受保護的虛擬方法:
Protected Overridable Sub OnShapeClick(ByVal e As EventArgs)
'--- Note: you can write code here to respond to the click
RaiseEvent ShapeClick(Me, e)
End Sub
而你需要注意表單上的用戶點擊。您將檢查是否點擊了形狀,並在事件發生時提高事件:
Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
If Shape.IsVisible(e.Location) Then OnShapeClick(EventArgs.Empty)
MyBase.OnMouseUp(e)
End Sub
該圖形不是您實例化並可能引發事件的對象。它只是一個圖形基元。你應該建立一個能夠繪製自己並引發事件的用戶控件。我懷疑這是否值得麻煩 – Steve
我知道這不是一個實例。這就是爲什麼我想知道這是否有可能。無論如何,我想一個用戶控件應該工作,我會試一試,謝謝 – luchosrock