Mentre cercavo di tradurre il tuo codice mi sono imbatuto in uno strano evento chiamato e.clicks con la seguente descrizione: ottiene il numero di volte che il pulsante del mouse è stato premuto e rilasciato e con il seguente codice pensavo di gestire il doppio click:
codice:
private void monthCalendar1_MouseDown(object sender, MouseEventArgs e)
{
            if (e.Clicks > 1)
            {
                //codice doppio click
            }
            else
            {
                //codice singolo click
            }
}
solo che e.clicks è sempre uguale a 1 anche se io premo più volte la data... perchè?