一部のフォームをモードレスにすることで、VB.NETアプリケーションをもう少し使いやすくすることに挑戦しています。
dlg.ShowDialog()を呼び出す代わりに、dlg.Show()とdlg.Hide()を使用する方法を理解したと思います。メインのアプリケーションフォームにモードレスダイアログのインスタンスがあります。
Public theModelessDialog As New dlgModeless
モードレスダイアログを起動するには、
theModelessDialog.Show()
dlgModeless
そして、私が持っている[OK]ボタンと[キャンセル]ボタンハンドラー内
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
それはうまくいくようです。
でも、右上の「X」ボタンが私を捕まえています。そのボタンでフォームを閉じてから、フォームを再度開こうとすると、次のようになります。
ObjectDisposedExceptionは処理されませんでした。破棄されたオブジェクトにアクセスできません。
私はほとんどそこにいるように感じますが、次のいずれかを行う方法がわかりません。
- その「X」ボタンを非表示にする
- オブジェクトを破棄しないようにイベントをキャッチします(キャンセルを押したように扱います)
何か案は?
このダイアログのクラスはですSystem.Windows.Forms.Form
。