Все правильно, нужно вызывать Invalidate, чтобы родитель перерисовал задний план, если ты хочешь можешь перед первой прорисовкой сохранить задний план родителя в битмап. А рамку лучше рисуй DrawFocusRect, естественно она пропадает после второго раза прорисовки на себя, она же использует инверсию, так что нужно рисовать один раз чтобы появилась и второй чтобы исчезла, но если ты будешь вызывать Invalidate второго раза не потребуется.