Hola.
Respecto a tu primera pregunta: No, el evento OnPaint no impide que se ejecuten los demás eventos OnPaint. Lo que ocurre es que se "sobreescribe" lo que ya habías dibujado.
Lo de MyBase.OnPaint(e) no es necesario, lo que es más, no es de utilidad. Recuerda que MyBase hace referencia a la clase padre del control y por lo general, esta propiedad la llamas dentro del código de una clase que hereda el método que quieres sobreescibir.
Lo de los parpadeos y el doble buffer, como comentas sería otra cosa si usaras DirectX u OpenGL, pero puedes mejorar muchísmo si implementas el doble buffer en tu código mediante la clase BufferedGraphics.
https://msdn.microsoft.com/en-us/library/b367a457(v=vs.110).aspx
En esa página hay una sección llamada "Manually Displaying Buffered Graphics" donde te explican cómo hacerlo.
Respecto a tu primera pregunta: No, el evento OnPaint no impide que se ejecuten los demás eventos OnPaint. Lo que ocurre es que se "sobreescribe" lo que ya habías dibujado.
Lo de MyBase.OnPaint(e) no es necesario, lo que es más, no es de utilidad. Recuerda que MyBase hace referencia a la clase padre del control y por lo general, esta propiedad la llamas dentro del código de una clase que hereda el método que quieres sobreescibir.
Lo de los parpadeos y el doble buffer, como comentas sería otra cosa si usaras DirectX u OpenGL, pero puedes mejorar muchísmo si implementas el doble buffer en tu código mediante la clase BufferedGraphics.
https://msdn.microsoft.com/en-us/library/b367a457(v=vs.110).aspx
En esa página hay una sección llamada "Manually Displaying Buffered Graphics" donde te explican cómo hacerlo.