2014-10-08 38 views
0

我試圖捕捉和處理我自己的列表視圖(添加,重命名,刪除項目)的內容更改,因爲沒有預定義的事件來完成這項工作。我閱讀了關於如何在所有執行更改的函數中放置和切換bool的方法,但這是我想避免的難看的編碼。這就是爲什麼我要問,如果有人知道的方式來註冊多個方法作爲觸發爲布爾這反過來又告知用戶,如果相當大的變化作了,像這樣的僞代碼:c#使多個不同的方法觸發一個布爾

bool changesDetected = false; 

void AddItem() 
{...} 
void RenameItem() 
{...} 
void RemoveItem() 
{...}  

void WatchOutForChanges() 
{ 
    if(AddItemHasCompleted || RenameItemHasCompleted || RemoveItemHasCompleted) 
    { 
     changesDetected = true; 
    } 
} 

void FormClosing() 
{ 
    if(changesDetected) 
    { 
     // Save File Choice 
    } 
} 

任何想法,將不勝感激!

+1

這不就是使用事件的情況嗎? – 2014-10-08 01:41:54

回答

1

您可以創建自己的委託,事件和事件處理程序,並調用方法來捕獲更改。不過,我認爲你正在尋找的是處理ListView已經存在的事件(在Windows窗體中)的方法:

bool changesDetected = false; 

    public void Setup() 
    { 
     ListView view = new ListView(); 
     view.AfterLabelEdit += WatchOutForChanges; 
     view.ControlAdded += WatchOutForChanges; 
     view.ControlRemoved += WatchOutForChanges; 
    } 

    public void WatchOutForChanges(object sender, EventArgs e) 
    { 
     changesDetected = true; 
    } 
+0

這樣的想法看起來不錯,但問題是,默認事件不適合我,所以我使用我自己的函數作爲解決方法。我如何按照上圖所示的方式訂閱自定義函數? – betaFlux 2014-10-08 09:53:11

相關問題