2014-10-08 1 views
0

작업을 수행하는 미리 정의 된 이벤트가 없으므로 listview의 내용 변경 내용을 catch하고 처리하려고합니다 (항목 추가, 이름 바꾸기, 항목 삭제). 변경을 수행하는 모든 함수에서 부울을 배치하고 전환하는 방법에 대해 읽었지 만 이는 추악한 코딩이므로 피하고 싶습니다. 상당한 변경 사항이있는 경우, 다시 말해 부울에 대한 트리거로 사람이 여러 방법을 등록하는 방법을 알고 있다면 내가 부탁 해요 이유입니다,이 의사 코드와 같은 일이 :여러 가지 다른 메서드를 만들어 bool을 트리거합니다.

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

이벤트 그냥 사용하지 않을까요? –

답변

1

자신 만의 대리자, 이벤트 및 이벤트 처리기를 만들고 메서드를 호출하여 변경 내용을 캡처 할 수 있습니다. 그러나, 당신이 찾고있는 것 ListView 이미있는 이벤트를 처리하는 방법입니다 (Windows Forms) :

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

관련 문제