2013-08-20 49 views
-4

我有類似於ListView的UserControl。我想從ListView創建事件加工刪除項目。UserControl中的C#委託和事件

我這樣做。但我不知道如何繼續。

public partial class ImagesSetEditor : UserControl 
{ 
    public delegate void ImageRemovedEventHandler(object sender, ImagesSetEditor e); 
    public event ImageRemovedEventHandler ImageRemovedEvent; 
+0

你的目標是什麼? – joe

+1

如果你想擴展'ListView'功能,你應該繼承它。否則,你必須創建自己的邏輯來舉辦活動。 –

回答

0

您不需要創建一個新的委託來符合基於事件的模式。建立在你的控制一個簡單的事件是這樣:

public event EventHandler ImageRemoved; 

,如果你需要傳遞任何自定義arugments,創建一個派生自EventArgs這樣一類:

public class ImageRemovedEventArgs : EventArgs 
{ 
    public int Index; //for example 
} 

然後聲明事件本身:

public event EventHandler<ImageRemovedEventArgs> ImageRemoved; 

你會那麼火事件本身:

if (ImageRemoved != null) ImageRemoved(this, new ImageRemovedEventArgs() { Index = yourValue }); 

檢查ImageRemoved != null是很重要的,因爲如果事件沒有訂閱者,它將拋出異常。

+0

謝謝。但是如何在UserControl或Form中傳遞索引? – guxago

+0

@guxago對不起,我不明白你的問題。請嘗試解釋。 – Rotem

+0

在UserControl中我有變量int remove_index。我該怎麼做remove_index = Index?在ImageRemovedEventArgs構造函數中設置 – guxago