Nella spiegazione precedente, immaginavo che il controllo personalizzato si riferisse all'area in cui si può muovere la "palla", piuttosto che alla palla stessa, ma probabilmente si può implementare anche così.

Se fai l'override dell'evento OnPaint, devi richiamare nell'implementazione anche il metodo ereditato usando l'identificatore MyBase (come indicato su MSDN).

Nel tuo codice non è visibile la creazione del Timer, ma suppongo che esso debba essere disabilitato subito al momento della creazione e abilitato solo a runtime, magari chiamando metodi opportuni che inserirai nella classe del controllo personalizzato oppure impostando una proprietà.