En general, nunca es buena idea bombardear al usuario con mensajes popup en ventanas modales a menos que sea estrictamente necesario. Esto crea confusión y aburrimiento, ya que requiere de la intervención del usuario para cerrar dicha ventana.
En otras palabras, es aceptable usar messagebox cuando se produce un error más o menos crítico (si es que has previsto que pueda suceder), pero nunca para avisar de un estado del programa que se considera normal o esperado.
En el caso que propone techm3, mi sugerencia es que utilices los mismos mecanismos que se han descrito aquí, pero para mostrar un texto no intrusivo por ejemplo en una barra de estado de la parte inferior del form, o bien en un lugar donde se vea pero no estorbe. Incluso podrías crearte un pequeño control basado en un picturebox para hacer una especie de indicador led que cambie de color según el estado de conexión.
A todo esto, y a menos que uses bases de datos remotas que eventualmente puedan cerrarse, entiendo que una vez que abres una conexión mysql, ésta permanece abierta hasta que tú la cierres explícitamente o hasta que finalice el timeout. Por tanto, no veo mucha necesidad de monitorizar su estado, si usas una función de conexión que primero chequee si está abierta y en caso contrario se vuelva a conectar.
Te dejo dicha función, que deberás llamar siempre antes de ejecutar una consulta con cn.Exec:
Para usarla:
De manera que si la conexión estaba cerrada, retornará FALSE y abrirá la conexión y en caso contrario, si estaba abierta (no es NULL) retornará también FALSE y saldrá de la función sin hacer nada. En caso de error, retornará TRUE después de avisar del error.