Esto es un problema viejo y es fácil encontrar soluciones en Google, pero, bueno, supongo que repetirlo una vez más no viene mal.
La situación es la siguiente: tengo un formulario base, a modo de plantilla, que lo uso cuando tengo acceso a datos. Tiene una serie de controles y métodos entre los que se encuentra un MenuStrip con varios ToolStripMenuItem. Es un control (él y sus ítems) que da problemas con el diseñador de formularios de Visual Studio cuando es un control heredado. Aparece como de sólo lectura y no nos deja trabajar con él y lo digo en serio: no podemos añadir elementos al menú en vista diseño, ni cambiar ninguna propiedad (ni siquiera el texto mostrado) de los ítems que ya tenga. Tenemos que hacerlo directamente en código. Lo que es más incómodo: no podemos controlar un evento de un elemento ya existente.
Me explico: tenemos un ToolStripMenuItem llamado mnuNuevo y declarado como Protected en el formulario plantilla y tengo mi formulario heredado (HijoMioForm). Si en HijoMioForm se me ocurre hacer algo como:
Private Sub mnuNuevo_Click() Handles mnuNuevo.Click
El programa compilará y funcionará, pero nos podemos olvidar del diseñador de formularios: cascará irremediablemente. Después de buscar soluciones a este problema por ahí (he leído bastantes quejas sobre este caso y otros similares), lo que hice fue declarar el dichoso método en la plantilla como Overridable y luego redefinirlo en HijoMioForm:
Protected Overridable Sub mnuNuevo_Click() Handles mnuNuevo.Click
Y
Protected Overrides Sub mnuNuevo_Click()