私は親フォームとして MDI 親を持っており、それを使用して他のフォームを開いてその中の子として整理しています。私はこのメソッドを使用して子フォームを開きます:
Public Sub OpenForm(ByVal frm As Form)
frm.MdiParent = MainView
frm.Show()
End Sub
メソッドは正しく機能し、それを使用して子フォームを開くのに問題はありません。私は各子フォームに3つのアイテムを持っています:
1- DataGridViewX (DevComponents.DotNetBar.Controls から)
2-パネル
3-ユーザーコントロール
これらの各アイテムを正しく使用でき、エラーは表示されません。DataGridViewX は DataSource に接続されており、すべてが正しいです。この問題は、MDI 親内で 2 つ以上のフォームを開き、それらを閉じようとすると発生します。エラーは次のとおりです。
The following exception occurred in the DataGridView:
System.IndexOutOfRangeException: Index 0 does not have a value.
at
System.Windows.Forms.CurrencyManager.get_Item(Int32index)
at
System.Windows.Forms.DataGridView.DataGridViewDataConnection.G" and caption "DataGridView Default Error Dialog".
これはエラーの原因となるコードです:
Partial Class Form1
Inherits DevComponents.DotNetBar.OfficeForm
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing) '' <<<< ERROR LINE
End Try
End Sub
今では明らかに、デザイナー内でコーディングしたり、コードを使用してフォーム内に要素を配置したりしません。Designer インターフェイスを使用します。
私は何をすべきか ?ありがとう