Der Grund liegt daran, dass ein DoubleClick beim MouseDown erfolgt. Der TitleClick aber beim MouseUp.
Und da erst MouseDown und dann MouseUp, erfolgt erst der Aufruf von DoubleClick, dann das Schließen des Fensters, und dann der MouseUp der dann von der Titel-Zeile behandelt wird.
Lösen kann man das durch einen Timer, der das Setzen von ModalResult entsprechend verzögert (100ms sind mehr als ausreichend und nicht spürbar).
Hier mal ein Ablauf der relevanten Events die bei einem DblClick passieren
- MouseDown
- OnIdle
- Click
- MouseUp
- OnIdle
- DblClick <= Schließen der Form
- MouseDown
- OnIdle
- MouseUp
- OnIdle