Now is working!
it was a string manipulation after all. Damn it.
I got inspired and I find the solution.
here it is:
if (e.NewValue == CheckState.Unchecked)
{
if (checkedList.Contains(checkedListBox1.Items[e.Index].ToString()))
{
int i = checkedList.IndexOf(checkedListBox1.Items[e.Index].ToString());
checkedList.RemoveAt(i);
}
}