4

私はデータグリッドビューを持っています。この datagridview には、datagridviewtextboxcolumns のようなカスタム datagridviewcolumns があります。サードパーティ コントロールは、各セルでホストされます。そのため、datagridview が設計されているため、カスタム セルでは、セルの編集モードでない限りコンテンツを表示できません。したがって、セルのコンテンツを表示するために、編集モードでないときにセルをペイントするために、ペイント メソッドをオーバーライドしました。セルに描画される画像はペイント メソッドで取得され、次のようなブロックを使用します。

using (Bitmap bitmap = new Bitmap())
{
   ...
}

また、Windows フォームの datagridview セルでコントロールをホストするために、IDataGridViewEditingControl を実装するクラスがあります。

public class a : third-party-component, IDataGridViewEditingControl
{
}

アプリケーションのある時点で、破棄されたオブジェクトにアクセスできないと言ってクラッシュします。コードでは、オブジェクトに対して破棄を行っていないため、これを理解していません。

スタックからは、上記のクラスでエラーが発生しているように見えますが、明示的には示されていません。

これは、Windows フォームの datagridview セルでホストされているコントロールが原因であると確信しています。何が問題になる可能性があるかについてのアイデアはありますか?

それともdatagridviewtextboxcolumnsに関連していますか? 以下のエラー:

Cannot access a disposed object.
Object name: 'DataGridViewTextBoxEditingControl'.
Stack Trace:
   at System.Windows.Forms.Control.CreateHandle()
   at System.Windows.Forms.TextBoxBase.CreateHandle()
   at System.Windows.Forms.Control.get_Handle()
   at System.Windows.Forms.Control.GetSafeHandle(IWin32Window window)
   at System.Windows.Forms.ToolTip.Hide(IWin32Window win)
   at System.Windows.Forms.ToolTip.HideAllToolTips()
   at System.Windows.Forms.ToolTip.BaseFormDeactivate(Object sender, EventArgs e)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnDeactivate(EventArgs e)
   at Crownwood.DotNetMagic.Forms.WindowChrome.OnDeactivate(EventArgs e)
   at System.Windows.Forms.Form.set_Active(Boolean value)
   at System.Windows.Forms.Form.WmActivate(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at Crownwood.DotNetMagic.Forms.WindowChrome.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
4

1 に答える 1