Jeg har et ListView, som jeg har lavet en select all funktion til. public static void ListViewSelectAll(ListView lv) { foreach(ListViewItem item in lv.Items) item.Selected = true; }
Dette virker fint, men hvis der er en event handler på ListView'ets SelectedItemChanged. Bliver denne kaldt for hvert enkelt element, hvilket ikke er hensigtmæssigt i alle tilfælde.
Er der en måde at disable eventhandleren, for senere at enable den igen? Eller er der en smartere måde at gøre det på?
Det du skriver vil klart virke, men hvad nu når jeg ikke "kender" til lv_SelectedIndexChanged? Min funktion ligger et helt andet sted i en hjælperklasse, og håndterer kald fra mange forskellige steder. Jeg ved derfor ikke hvilken funktion event handleren er set til.
Så er du vist nødt til, at have en reference til den Form klasse hvorpå du vil disable / enable eventhandleren.
Så må du lave to public metoder på din Form, en SuspendListView og en ResumeListView, du så kan kalde før og efter du vil ændre eventhandleren.
Hvis det er en helt anden tråd du er i, skal du stadig have en reference til Form klassen, men så skal metoderne kaldes vi Delegates og Form klassens Invoke() metode - men dette burde kun være nødvendigt, hvis hjælpeklassen og Form klassen ikke er samme tråd.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.