void InternalSelect(long start, long length)
{
long pos = start;
long sel = length;
int cp = 0;
if(sel > 0 && _caretVisible)
DestroyCaret();
else if(sel == 0 && !_caretVisible)
CreateCaret();
SetPosition(pos, cp);
SetSelectionLength(sel);
UpdateCaret();
Invalidate();
}