Autor |
Beitrag |
ebber
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: So 12.04.09 13:20
Hi,
ich möchte gerne ganz am anfang meines Programmes überprüfen ob es überhaupt starten darf. Da gibt es die App.g.cs:
C#-Quelltext 1: 2: 3: 4: 5: 6:
| public static void Main() { Überprüfung(); Rr.App app = new Rr.App(); app.InitializeComponent(); app.Run(); } |
Wenn ich da die Überprüfung() reinmachen, funktioniert das ganze. Leider, wie auch schon in der Datei erwähnt, ist sie "auto-generated". Wenn sie nicht geöffnet ist wird sie bei jedem built überschrieben.
Ich habe dann versucht die Main() hier zu löschen und in App.xaml.cs zu setzen. Das hat auch funktioniert. Wenn die App.g.cs aber wieder erstellt wird bekomme ich verständlicherweise den Fehler dass es Main() schon gibt.
Kann mir da vielleicht jemand helfen?
MfG
Ps: Ich weis nicht ob es wichtig ist, oder ob man es sieht. Es is WPF. Moderiert von Kha: Topic aus Sonstiges (.NET) verschoben am So 12.04.2009 um 13:44
|
|
Kha
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 12.04.09 14:04
Dafür solltest du das Application.Startup-Event benutzen können (bzw. OnStartup überschreiben). ebber hat folgendes geschrieben : | Ps: Ich weis nicht ob es wichtig ist, oder ob man es sieht. Es is WPF. |
Die WPF-Sparte wäre jedenfalls nicht verkehrt .
_________________ >λ=
|
|
ebber
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: So 12.04.09 14:24
Ok, das nächste mal kommts dann gleich in WPF
Das Startup event habe ich auch gesehen, leider kommt das zu spät. Ich glaube, erst nach InitializeComponent(); und das wäre dann unnötig. Also meine mainform wird aufjedenfall erstellt und auch wieder zerstört.
|
|
ebber
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: Sa 18.04.09 01:31
Ich habe da irgendwie was falsch interpretiert.
Das OnStartup Event scheint mir doch das richtige zu sein für da was ich machen möchte. Das Problem lag wo anders.
Wie gesagt wollte ich überprüfen ob das Programm überhaupt starten darf:
C#-Quelltext 1: 2: 3: 4: 5:
| protected override void OnStartup(StartupEventArgs e) { if (new AskIfCanStartWindow().ShowDialog().Value == false) Close(); } |
Ich wollte das einfach in einem Fenster abfragen, mit einem Ja / Nein Button. Wenn man nein drückt, wollte ich das Programm einfach wieder schließen. Wenn nicht sollte es einfach normal weiterlaufen.
Das Problem scheint mir jetzt aber zu sein, dass das Programm in mein Frage-Window das MainWindow interpretiert? Denn egal was ich mache schließt sich die Anwendung, nachdem das Fenster angezeigt wurde wieder.
Kann mir vielleicht bitte bei diesem Problem jemand helfen?
MfG
|
|
Greenberet
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: Sa 18.04.09 10:00
Probiers mal mit DialogResult
|
|
Kha
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 18.04.09 11:21
|
|
ebber
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: Sa 18.04.09 12:50
Irgendwie hat das so wie du vorgeschlagen hast nich funktioniert, oder ich habe was falsch gemacht, aber am Ende hatte ich immer 2 MainWindows.
Eine kurze Zwischenfrage: Wäre es nicht besser das Startup-Event zu verwenden? Ist ja das gleiche, aber ich kann dann base.On... weglassen?
Eine andere Möglichkeit, die ich nach deinem Zitat gefunden habe ist die:
C#-Quelltext 1: 2: 3: 4:
| ShutdownMode = ShutdownMode.OnExplicitShutdown;
if (new MyToolWindow().ShowDialog() == false) Application.Current.Shutdown(); |
Das funktioniert im Prinzip nur wird nachdem ich Application.Current.Shutdown() aufgerufen habe noch mein MainWindow erstellt und wieder zerstört.
So würde das funktionieren:
C#-Quelltext 1:
| Process.GetCurrentProcess().Kill(); |
Scheint mir aber doch unschön?
|
|
Kha
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 18.04.09 13:07
|
|
ebber
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: Sa 18.04.09 13:28
Ok, danke, es funktioniert.
Nur noch eine kleinigkeit stört mich. Nun wird das MainWindow doch erstellt. Auch wenn ich es vielleicht gar nicht brauche. Ich lasse es jetzt mal so, aber wenn gerade jemand noch eine bessere Lösung hat, dann her damit.
MfG
|
|
Kha
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 18.04.09 13:40
|
|
ebber
Beiträge: 239
Erhaltene Danke: 1
Win XP, Win 7
C# (VS 2010), Delphi (2007), Expression 4
|
Verfasst: Sa 18.04.09 16:07
Oh, daran hatte ich irgendwie nicht gedacht.
Danke, jetzt bin ich glücklich
|
|