Laden...

Problem mit eigenem Control

Erstellt von turndevil vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.595 Views
T
turndevil Themenstarter:in
41 Beiträge seit 2004
vor 19 Jahren
Problem mit eigenem Control

Hi Leute.

Ich wollte mir mal ein eigenes Control für ein größeres Projekt schreiben, habe aber Probleme bei dessen Einbindung. (Source und Compiled gibts als anhang)

Ich kann das Control normal einbinden (solang sich die keys.txt im richtigen Verzeichnis befindet). Was aber Probleme macht ist das Löschen einer Instanz aus meiner späteren Form. Da kommt dann ne ObjectDisposedException und er meckert wegen ner TextBox die schon disposed wäre.

Wär cool wenn ihr euch das Control mal anschauen würdet. Ich würd gern wissen wo da der Fehler liegt, komm net drauf.

Vielen Dank im Voraus.

mfg
tom

P.S.: Ich hoffe ich habe das Problem wenigstens ein bisschen anschaulich erklärt. =)

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo turndevil,

die Exception sagt es doch schon ziemlich genau:

System.ObjectDisposedException: Cannot access a disposed object named "TextBox".
Object name: "TextBox".
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.TextBoxBase.CreateHandle()
at System.Windows.Forms.Control.get_Handle()
at System.Windows.Forms.TextBox.GetLength()
at System.Windows.Forms.TextBoxBase.set_SelectionStart(Int32 value)
at System.Windows.Forms.TextBox.SelectInternal(Int32 start, Int32 length)
at System.Windows.Forms.TextBoxBase.AppendText(String text)
at SARS.MCKeyboard.MobileKB.UpdatePreviewWin()
at SARS.MCKeyboard.MobileKB.updateTimer_Tick(Object sender, EventArgs e)
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.Callback(IntPtr hWnd, Int32 msg, IntPtr idEvent, IntPtr dwTime)

Ein TextBox-Control ist bereits disposed, aber es wird trotzdem noch versucht, darauf zuzugreifen. Dieser Zugriffsversuch hat seinen Anfang bei Timer.Callback, sprich der Timer schlägt zu, während das UserControl gerade zerstört wird.

Wenn du in 'protected override void Dispose (bool disposing)' deines Controls die existierenden Timer anhältst (Stop), ist das Problem verschwunden.

herbivore