Leider sind Fehler in der Listview-Klasse, dies ist einer von ihnen. Der folgende Code ist ein Fix, der für mich funktioniert hat.
Edit: Sorry, das funktioniert nicht ganz richtig, obwohl es den Fehler verhindert, den Sie in Ihrer Frage zeigen. Dies verhindert, dass mehrere Elemente ausgewählt und dann durch Klicken auf das Kontrollkästchen überprüft werden.
void SetupListView()
{
listView.ItemCheck += new ItemCheckEventHandler(listView_ItemCheck);
listView.MouseDown += new MouseEventHandler(listView_MouseDown);
listView.MouseUp += new MouseEventHandler(listView_MouseUp);
listView.MouseLeave += new EventHandler(listView_MouseLeave);
}
bool mouseDown = false;
void listView_MouseLeave(object sender, EventArgs e)
{
mouseDown = false;
}
void listView_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
}
void listView_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
}
void listView_ItemCheck(object sender, ItemCheckEventArgs e)
{
if(mouseDown)
{
e.NewValue = e.CurrentValue;
}
}
Gute Frage! Sehr deutlich beschreibt das Problem. –