Où dois-je contrôler le comportement du bouton de fermeture "X" dans le coin supérieur droit d'un winform?

Je suis de s'aventurer dans la fabrication de mon VB.NET demande un peu mieux à l'utilisation en rendant certaines des formes non modale.

Je crois que j'ai compris comment utiliser la dlg.Show() et de la dlg.Hide() au lieu d'appeler la dlg.ShowDialog(). J'ai une instance de ma boîte de dialogue non modale dans mon formulaire principal de l'application:

Public theModelessDialog As New dlgModeless

À feu vers le haut de la boîte de dialogue non modale j'appelle

theModelessDialog.Show()

et au sein de l'OK et Annuler des gestionnaires de bouton dans dlgModeless j'ai

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    Me.Hide()
End Sub

Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
    Me.Hide()
End Sub

et qui semble bien fonctionner.

Le bouton "X" dans le coin supérieur droit est d'arriver à moi, si. Quand je ferme le formulaire avec le bouton, puis essayez à nouveau d'ouvrir le formulaire, je reçois

ObjectDisposedException était non gérée. Impossible d'accéder à un objet supprimé.

J'ai l'impression que je suis la plupart du chemin, mais je ne peux pas comprendre comment le faire de la façon suivante:

  • Cacher que le "X" bouton
  • Attraper le cas, donc je ne pas disposer de l'objet (juste le traiter comme je l'ai frappé Annuler)

Des idées?

La classe de cette boîte de dialogue est System.Windows.Forms.Form.

source d'informationauteur John | 2010-05-15