+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

SEHException beim Öffnen des DesignerControls


(Simone Lange) #1

Hallo,

ich habe in einem C# Projekt das WinForms DesignerControl integriert. Wenn ich nun beim starten eine vorhandene lst-Datei als Stream (als AutoProjectStream) angebe, bei der im normalen Designer die Meldung

“Fehlende Tabelle Zum Zeitpunkt der Erstellung des Projekts gab es folgende Tabellen, die jetzt nicht vorhanden sind:”

und anschließend

“Beim Laden des Projekts sind Fehler aufgetreten Sie können die Fehler im Fenster ‘Formelfehler’ bearbeiten. Beachten Sie, dass Sie das Projekt nicht ausgeben können, bevor alle Fehler korrigiert wurden.”

erscheint, bekomme ich mit dem DesignerControl diese Exception:
Ein Ausnahmefehler des Typs “System.Runtime.InteropServices.SEHException” ist in combit.ListLabel22.dll aufgetreten.
Eine externe Komponente hat eine Ausnahme ausgelöst.

Mit folgendem StackTrace:
bei combit.ListLabel22.NativeMethods.LlDefineLayout64(Int32 hLlJob, IntPtr hWnd, String pszTitle, Int32 nObjType, String pszObjName)
bei combit.ListLabel22.LlCore.LlDefineLayout(IntPtr windowHandle, String title, LlProject projectType, String projectFile)
bei combit.ListLabel22.ListLabel.DesignFromRelationalDataSource(IDataProvider dataSource, String designerTitle, LlProject projectType, String projectFile, Boolean showFileSelect)
bei combit.ListLabel22.ListLabel.AutoDesign(String designerTitle, LlProject projectType, String projectFile, Boolean showFileSelect)
bei combit.ListLabel22.NativeMethods.LlDefineLayout64(Int32 hLlJob, IntPtr hWnd, String pszTitle, Int32 nObjType, String pszObjName)
bei combit.ListLabel22.ListLabel.Design(Object userData, IntPtr windowHandle, String designerTitle, LlProject projectType, String projectFile, Boolean showFileSelect)
bei combit.ListLabel22.ListLabel.Design(LlProject projectType, Stream projectStream, Stream printerSettingsStream)
bei System.Windows.Forms.Control.OnHandleCreated(EventArgs e)
bei System.Windows.Forms.Control.WmCreate(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Ich würde aber auch gerne in diesem Fall das DesignerControl trotzdem öffnen, um dem Anwender die Möglichkeit zu geben, den Formelfehler zu beheben und nicht nur die Exception catchen.

Viele Grüße,
Simone


(combit Support - Patrick Preuschoff) #2

Hallo Simone,

vielen Dank für Ihren Beitrag.

Diese Frage läßt sich im Rahmen des Forums leider nicht abschließend klären - wir benötigen zur Klärung weitere Informationen von Ihnen, die auf dieser Plattform nicht sinnvoll ausgetauscht werden können. Gerne können Sie in unserem Supportportal unter https://www.combit.net/supportportal/ einen Support-Case eröffnen, bitte kopieren Sie dabei die relevanten Informationen aus diesem Thread in die Beschreibung.

Mit freundlichen Grüßen

Patrick Preuschoff
Technischer Support
combit GmbH


(Simone Lange) #3

Hallo Herr Preuschoff,

durch ein wenig ausprobieren, bin ich zu einer Lösung gekommen.
In dem C# Projekt wird das WinFormsControl über WindowsFormsHost als Child integriert. Dabei hatte ich die Basisklasse der Klasse, die das DesignerControl initialisiert, als “UserControl”, was mit korrekten lst-Dateien als AutoProjectStream auch problemlos funktionierte, bei fehlerhaften jedoch zu der SEHException führte.
Ändert man die Basisklasse zu “Form” und setzt die “TopLevel” Eigenschaft auf “false” tritt das Problem nicht mehr auf und das DesignerControl wird mit den üblichen Meldungen (“Fehlende Tabelle Zum Zeitpunkt…” usw.) gestartet, falls eine fehlerhafte lst-Datei verwendet wird.
Was die eigentliche Ursache für die SEHException ist, kann ich nicht sagen.
Trotzdem vielen Dank für Ihre Antwort.

Viele Grüße,
Simone