0

私は親フォームとして 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 インターフェイスを使用します。

私は何をすべきか ?ありがとう

4

1 に答える 1

0

DataGridViewX のバインディング ソースを何も設定せず、問題を解決するだけです。

Private Sub theForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    DataGridViewX1.DataSource = Nothing
End Sub
于 2016-08-03T06:33:22.197 に答える