| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Willkommendialog beim Laden der Anwendung (1353 mal gelesen)
|
deHolzschneider Mitglied
Beiträge: 14 Registriert: 07.01.2011 ACA 2011, 64bit
|
erstellt am: 08. Mrz. 2011 14:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe mit vb.net eine kleine Anwendung programmiert, die auch funktioniert. Ich möchte jetzt noch einen Willkommendialog anzeigen lassen, wenn die Anwendung (also die entsprechende dll) mit netload geladen wird. Normalerweise öffne ich die einzelnen Formulare mit
Code: <CommandMethod("Fenster_oeffnen")> _ Public Sub NeuesProjekt() Dim modalForm As Hauptdialog_01 = New Hauptdialog_01() Application.ShowModalDialog(modalForm) End Sub
so dass mir dann das entsprechnde Formular angezeigt wird. Es ist mir aber nicht gelungen, den Aufruf direkt in die "Hauptklasse" einzubinden, also nur:
Code: Dim modalForm As Hauptdialog_01 = New Hauptdialog_01() Application.ShowModalDialog(modalForm)
Ich erhalte hier die entsprechende Meldung, dass eine entsprechende Deklaration für Application erwartet wird. Bei "Standardanwendungen" (also ohne Autocad) ist das einblenden kein Problem, aber hier will es irgendwie nicht. Hat jemand schonmal sowas versucht und Erfolg gehabt? Schonmal vielen Dank! de Holzschneider Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 08. Mrz. 2011 15:06 <-- editieren / zitieren -->
Hi, ich weiß leider gar nicht, was Du mit 'Hauptklasse' meinst. Kannst Du die Code-Schnippsel ein wenig erweitern, damit wir sehen, wo jetzt was definiert ist? - alfred - ------------------ www.hollaus.at |
deHolzschneider Mitglied
Beiträge: 14 Registriert: 07.01.2011 ACA 2011, 64bit
|
erstellt am: 08. Mrz. 2011 15:52 <-- editieren / zitieren --> Unities abgeben:
Ja, da wusste eben nur ich was ich genau meine, sorry! Ich habe mittlerweile auch noch ein wenig gegoogelt und habe eine Lösung für das Problem gefunden (man muss nach "Splash Screen" suchen, auf Deutsch gab's nix...). Dieser Post http://through-the-interface.typepad.com/through_the_interface/2007/06/showing_a_splas.html hat mir die Lösung gezeigt, die ich auch gerne für alle anderen zeigen möchte, falls jemand auch nochmal das gleiche Problem hat.ö Prinzipiell kann man das Teil so erweitern, dass es jeden beliebigen Code beim Laden der Anwendung ausführt, indem man einfach den Inhalt von Public Sub Initialize() austauscht. Die Terminate-Sub muss auch bleiben, wenn Sie nicht gebraucht wird, einfach leer lassen (so wie hier). Wichtig ist, dass Imports System, Imports Autodesk.AutoCAD.ApplicationServices, und Imports Autodesk.AutoCAD.Runtime eingebunden werden. Für den Willkommenbildschirm muss zusätzlich unter "Verweise" das PresentationCore 3.0 Framework geladen werden (steht in der Auswahlliste). Noch ein weiterer Hinweis: Nicht den "Begrüßungsbildschirm" aus Visual Studio nutzen, sondern ein einfaches "Windows Form" auswählen und dass dann anpassen, hat zumindest bei mir geklappt. So, nun genug geschrieben, hier dann der Code, der je nach Wunsch natürlich angepasst werden kann (hab einfach nur kopiert und übersetzten lassen):
Code:
Implements Autodesk.AutoCAD.Runtime.IExtensionApplication Public Sub Initialize() Implements IExtensionApplication.Initialize Dim ss As Willkommendialog = New Willkommendialog() ' Rather than trusting these properties to be set ' at design-time, let's set them here ss.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen ss.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None ss.Opacity = 0.8 ss.TopMost = True ss.ShowInTaskbar = False ' Now let's disply the splash-screen Application.ShowModelessDialog(Application.MainWindow.Handle, ss, False) ss.Update() ' This is where your application should initialise, ' but in our case let's take a 3-second nap System.Threading.Thread.Sleep(3000) ss.Close() End Sub Public Sub Terminate() Implements IExtensionApplication.Terminate End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
oscarr Mitglied CAD-Manager
Beiträge: 198 Registriert: 02.10.2007 ACA 2012 - English Win 7/x64
|
erstellt am: 08. Mrz. 2011 15:55 <-- editieren / zitieren --> Unities abgeben: Nur für deHolzschneider
Hallo, wenn ich Dich richtig verstehen meinst Du so was (ungetestet): Code:
Class Hauptklasse Implements IExtensionApplication Public Sub Initialize() Implements IExtensionApplication.Initialize Dim modalForm As Hauptdialog_01 = New Hauptdialog_01() Application.ShowModalDialog(modalForm) End Sub Public Sub Terminate() Implements IExtensionApplication.Terminate End Sub <CommandMethod("Fenster_oeffnen")> _ Public Sub NeuesProjekt() Dim modalForm As Hauptdialog_01 = New Hauptdialog_01() Application.ShowModalDialog(modalForm) End Sub
End Class
dabei sollte beim laden der dll das gleiche passieren wie mit Deinem "Fenster_oeffnen" Befehl. Gruss Holger /edit: zu spät [Diese Nachricht wurde von oscarr am 08. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 08. Mrz. 2011 17:06 <-- editieren / zitieren -->
Hi, darf ich nur kurz ergänzen? Ich würde die Deklaration des Form-Objekts ausserhalb der Sub Initialize deklarieren, dann innerhalb der Sub initialisieren und starten (nicht-modal), damit läuft die Initialisierung zumindest mal weiter und bleibt nicht stehen! Und erst am Ende der Initialisierung dann das Form wieder mit '.dispose' killen. Andere Variante wäre im Form beim Load-Event dann mit Sleep ein paar Sek stehen lassen und dann selbständig wieder verrollern. Hintergrund des ganzen nochmals: es wäre schade, wenn wegen eines solchen Dialogs der weitere Initialisierungsvorgang warten müsste. Das ist auch nicht primärer Zweck des Splash-Screens. Viel Erfolg, - alfred - ------------------ www.hollaus.at |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|