Form1.Show in Klassenbibliothek nicht direkt ansprechbar?

15/03/2008 - 15:11 von Jens Duczmal | Report spam
Tach auch,

mir ist in VB.NET 08 etwas "merkwürdiges" aufgefallen.
Ich kann damit leben, aber vielleicht kann mir ja jemand
erklàren, weshalb das so ist.

Erstelle ich eine Windows-Application mit einem Form1 und
einer simplen Klasse, kann ich aus der Klasse
Form1.Show() direkt aufrufen.

Mache ich dasselbe in einer Klassenbibliothek
zeigt mir IntelliSense .Show() gar nicht erst an.

Es sieht so aus als müsste ich erst z.B. mit

Dim frm as New Form1
und dann per
frm.Show() darauf zugreifen?

Hat das einen speziellen Grund? Als VB6ler ist mir das neu.

Gruß,
Jens
 

Lesen sie die antworten

#1 Thorsten Doerfler
15/03/2008 - 16:51 | Warnen spam
Jens Duczmal schrieb:
Erstelle ich eine Windows-Application mit einem Form1 und
einer simplen Klasse, kann ich aus der Klasse
Form1.Show() direkt aufrufen.

Mache ich dasselbe in einer Klassenbibliothek
zeigt mir IntelliSense .Show() gar nicht erst an.

Es sieht so aus als müsste ich erst z.B. mit

Dim frm as New Form1
und dann per
frm.Show() darauf zugreifen?

Hat das einen speziellen Grund?



Ja. In einer Windows Forms Anwendung baut VB im Hintergrund die
Auto-Globalen Form-Instanzen <FormName>, wie man sie von VB6 her
kannte. In Klassenbibliotheken gibt es das nicht, weil man dort im
Normalfall keine Formulare hat bzw. die DLL nicht für die Anzeige
zustàndig sein muss.

Eigentlich sollte man auch komplett auf diesen impliziten Mechanismus
verzichten, da man ansonsten keine saubere Trennung von Logik und
Oberflàche baut. Wenn eine Klasse zugriff auf eine Formularinstanz
braucht, übergibt man diese explizit als Parameter. Wenn überhaupt.
Eigentlich sollte sich das Formular die Eigenschaften aus der Klasse
besorgen bzw. die Klasse z.B. Statusànderungen per Event mitteilen.
Damit erspart man sich eine Menge Probleme. U.a. eben auch solche, die
Dein Grid betreffen.

Als VB6ler ist mir das neu.



Da wird Dir sicher noch einiges anderes Neues auffallen.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen