Programm ohne Form?
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von dive26.
-
-
-
-
-
-
-
-
-
Hallo!
Ich weis, die Frage ist schon etwas älter.
Jedoch stehe ich als Einsteiger nun vor dem selben Problem.
In VB6 hatte ich die Prozedur "main" in einem Modul untergebracht und die Anwendung hat dort gestartet.
Dort habe ich dann die einzelnen Initialisierungen vorgenommen und entsprechende Forms gestartet.
Wenn ich in VB2012 nun den Anwendungstyp auf "Windows Form" stelle, dann kann ich nur eine Form als Startobjetk definieren.
Das möchte ich nicht.
Der Umweg den Anwendungstyp auf "Windows-Dienst" zu stellen, finde ich auch nicht ganz korrekt.
Bei meiner Software handelt es sich ja um keinen Dienst. Oder ist das egal?
Folgende Vorgangsweise habe ich auch nicht wirklich verstanden:
Also, ich hab vor dem Posten nur dein Post gesehen, somit hab ich n' neues Projekt gemacht und eine neue Klasse erstelltLiebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at -
-
@dive26: In Visual Basic wird das von der IDE verborgen. Die Main-Methode gibt's immer noch, nur ist die ein Bisschen versteckt.
Füge dem Projekt eine Klasse namens "Program" hinzu. Die Klasse kann auch gerne anders heißen, aber ich hab das mal von C# übernommen. Da gibt's auch eine Datei namens Program.cs.
In dieser Klasse erstellst Du eine Public Shared Sub Main mit einem String()-Argument (also ein String-Array). Das sind die Komanndozeilenparameter, mit der die Anwendung gestartet wird.
Jetzt gehst Du in die Projekteinstellungen, dann unter "Anwendung" stellst Du das Startobjekt auf "Sub Main" um.
Wenn Du den Anwendungstyp auf "Konsolenanwendung" stellst, dann sieht man eine Konsole. Bei einer Windows-Forms-Anwendung mit der Main-Methode als Startobjekt gibt's keine Konsole.
Wenn Du jetzt eine Form anzeigen willst, musst Du Application.EnableVisualStyles() aufrufen, damit die visuellen Stile zugelassen werden. Sonst sehen die Fenster Windows 2000 mäßig aus. Dann instanzierst Du deine Form und rufst Application.Run() mit der Form-Intanz auf."Luckily luh... luckily it wasn't poi-"
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils -
Danke Niko!
Das hört sich aber sehr umständlich und wie ein Workaround an.Jetzt gehst Du in die Projekteinstellungen, dann unter "Anwendung" stellst Du das Startobjekt auf "Sub Main" um.
Wenn Du den Anwendungstyp auf "Konsolenanwendung" stellst, dann sieht
man eine Konsole. Bei einer Windows-Forms-Anwendung mit der Main-Methode
als Startobjekt gibt's keine Konsole.
dann habe ich aber das Problem mit dem Aufruf von neuen Forms.
Ich bin aber auf folgendes draufgekommen - und das funktioniert scheinbar auch:
1. eine Form als Startform
2. Im Form_load alles reinpacken was ich möchte und von dort aus alle anderen Forms starten
3. Me.close schließt die Form bevor sie überhaupt angezeigt wird.
Somit habe ich immer noch eine Windows-Form Anwendung.
Mal sehen, ob das so machbar ist.
LG Roland
Du erstellst einfach ein neues Modul und dort eine Main-Methode, dann sollte dieses Modul auch als Startobjekt auswählbar sein.Liebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at -
dive26 schrieb:
Nur wenn ich bei Anwendungstyp statt "Windows-Forms-Anwendung" etwas anderes auswähle, lässt sich eine Klasse oder ein Modul als Start_Main definieren.
Hast du das Modul mit Main() vorher auch erstellt und im Projekt gespeichert? -
@dive26: Hab vergessen zu erwähnen, dass Du das Anwendungsframework deaktivieren musst. Denn das Anwendungsframework übernimmt normalerweise genau das, was Du manuell machen willst. Auch der Mutex, damit das Programm nur einmal gestartet werden kann ("Einzelinstanzanwendung") wird normalerweise vom Anwendungsframework übernommen.
Und das ist übrigens kein Workaround, sondern genau der Weg, der genommen werden soll.
Was Du zur Zeit machst, ist ein Workaround. Die Startform sofort wieder abzuwürgen ist nicht sehr sinnvoll.
Und Du solltest das Form.Load-Event nicht verwenden. Bei 64bit Windows gibt's da Probleme, wenn eine Exception auftritt. Die wird einfach verschluckt. Verwende den Konstruktor der Form (einfach "Public Sub New" eintippen und Enter drücken) oder, wenn's geht, die OnShown-Überschreibung:
Das lässt sich ganz einfach einfügen, indem Du nur "Overrides " und dann den Namen des zu überschreibenden Members eingibst. Dann wird der Rest automatisch eingefügt.
Im Konstruktor hast Du noch das Problem, dass bei einer Exception nur eine InvalidOperationException angezeigt wird und Du erst im StackTrace der InnerException nachsehen musst, wo die Exception tatsächlich aufgetreten ist. Das sollte bei OnShown nicht passieren, bin mir aber nicht mehr sicher."Luckily luh... luckily it wasn't poi-"
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils -
Das, was du da gerade machst, ist wohl eher der Workaround, so wie Niko Ortner es erklärt hat, macht man das auch normalerweise.
Hier nochmal Schritt für Schritt mit Bildern:
1. Du legst dir ein neues WindowsForms-Projekt an.
2. Du fügst dem Projekt ein neues Modul hinzu.
3. In dem Modul erstellst du eine Main-Methode.
4. Klicke nun im Projektmappenexplorer doppel auf "MyProject", um die Projekteigenschaften zu öffnen.
5. Dort deaktivierst du dann zunächst das Anwendungsframework, wodurch sich "Startformular" in "Startobjekt" ändert. Dort kannst du dann dein Modul auswählen.
-
Super, das hat mal geklappt.
Und wie aktiviere ich nun wieder die Visuellen Stile?
LG RolandLiebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at -
Niko Ortner schrieb:
Wenn Du jetzt eine Form anzeigen willst, musst Du Application.EnableVisualStyles() aufrufen, damit die visuellen Stile zugelassen werden. -
Danke, oft steh ich wirklich auf der Leitung.
Liebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
-
Ähnliche Themen
-
Progrunt98 - - Sonstige Problemstellungen
-
4 Benutzer haben hier geschrieben
- Gast (9)
- dive26 (4)
- Artentus (3)
- Niko Ortner (2)