2

我有一個datagridview。這個datagridview包含海關datagridviewcolumns和其他類似datagridviewtextboxcolumns。第三方控制託管在每個單元格中。因此,在設計datagridview時,在自定義單元格上,除非您處於單元格的編輯模式,否則無法顯示內容。因此,爲了實現單元格內容顯示,我已經重寫了繪畫方法,以便在不處於編輯模式時繪製單元格。在細胞中被繪製的圖像在塗料方法獲得和我使用塊,如:C#WinForms:無法訪問處理對象

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

另外,主機在窗口控制窗體DataGridView單元,I有一個實現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) 

回答

0

看來你還沒有處理爲ToolTip創建的對象。確保您已將創建的ToolTip對象置於相應控件(IDataGridViewEditingControl)的dispose方法中。

protected override void Dispose(bool disposing) { if (disposing) { if (Tip != null) { Tip.Active = false; Tip.Dispose(); Tip = null; } } base.Dispose(disposing); }

相關問題