Well, I am not 100% sure what the right behaviour should be here. DropList is explicitely designed to allow having the value not in list. OTOH, the "SetIndex(0)" after removal was already there...
Well, I guess under circumstances, this is the right fix:
void DropList::Adjust()
{
int i = FindKey(value);
if(i < 0)
if(GetCount())
SetIndex(0);
else
SetData(Null);
}