| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Userform (679 mal gelesen)
|
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 26. Jul. 2010 13:48 <-- editieren / zitieren --> Unities abgeben:
Hallo an Alle, ich hab mal wieder ein programmier technisches Problem mit VB.NET. Ich möchte eine Userform von verschiedenen Prozeduren aus ansprechen. Diese Prozeduren befinden sich alle in einer Klasse. Normalerweise würde ich in einer Prozedur schreiben: Dim myform As DWG_Tabelarisch = New DWG_Tabelarisch Aber wenn ich das in jeder Prozedur mache, erstelle ich zu viele Instanzen dieser Userform (denke ich) Wenn ich's über den Prozeduren schreibe, bekomme ich eine Fehlermeldung. Wie muß ich vorgehen um wirklich nur eine Instanz der Userform zu erstellen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 26. Jul. 2010 13:53 <-- editieren / zitieren -->
Hi, deklariere in dem Header einer Klasse, auf welche alle anderen Zugriff haben:
Code: Public Shared myAppForm as DWG_Tabelarisch = nothing
In den anderen Klassen kannst Du dann:
Code: If myAppForm is Nothing then myAppForm = new DWG_Tabelarisch
Und Du kommst aus allen Klassen dann auf die gleiche Form-Instanz. - alfred - [EDIT] VORSICHT: nicht vergessen, dieses Form auch wieder ordnungsgemäß zu beenden (myAppForm.Dispose), bevor Du AutoCAD schliesst! [/EDIT] ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 26. Jul. 2010 14:39 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 26. Jul. 2010 16:12 <-- editieren / zitieren -->
Hi, >> Da schreibe ich jetzt im Header: Public Shared myForm As DWG_Tabelarisch = New DWG_Tabelarisch Das gilt aber nur dann, wenn diese eine Klasse nur einmal instanziert wird, sonst wird mit jeder neuen Instanzierung Dein Form neu gebaut (und die alte Form-Instanz nicht sauber aus dem Speicher geputzt, sondern einfach abgeschossen). - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 27. Jul. 2010 13:33 <-- editieren / zitieren --> Unities abgeben:
Hi Alfred, wie wäre es dann richtig. Wenn ich Beides in einer Klasse schreiben würde? Public Shared myAppForm as DWG_Tabelarisch = nothing If myAppForm is Nothing then myAppForm = new DWG_Tabelarisch Obwohl ich dann das "if" weglassen könnte. Danke, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 27. Jul. 2010 15:33 <-- editieren / zitieren -->
Hi, es hat in meiner Vorstellung des Programmierens mache ich mir Instanzen von Objekten nur dann, wenn ich sie brauche. Als solches würde ich z.B. das Form nicht schon mit der Instanzierung der Initialisierungs-Klasse automatisch setzen. Aber grundsätzlich ist es nicht falsch, zu schreiben: Public Shared myAppForm as DWG_Tabelarisch = new DWG_Tabelarisch - alfred - ------------------ www.hollaus.at |