System.Windows.Application i okno powitalne programu

0

Cześć,

Prosto do tematu... zdecydowałem się wykonać program, którego zadaniem jest pobieranie elementów z bazy danych. Oczywiście o tym do jakiej bazy danych użytkownik chciałby się połączyć decyduje on sam wybierając bazę danych z okna powitalnego. Dalej wybiera pozycje OK, loguje się i uruchamia mu się właściwy program.

Zasada działania praktycznie trywialna pod warunkiem, że zostanie zrealizowana dość topornie... uruchamiam główne okno programu, a w nim wywołuję drugie do logowania.

Jeśli jednak założymy, że nasze okna programu są tylko warstwą prezentacji problem, przynajmniej dla mnie, robi się mniej trywialny. Założyłem, że w takim przypadku okno logowania powinno być zainicjowane w metodzie Main(). Podobnie w tej samej metodzie powinno znaleźć się wywołanie okna głównego, jeśli logowanie przebiegło pomyślne.

Niestety w domenie aplikacji mogę tylko raz wywołać System.Windows.Application. Czy znacie jakieś wzorce na taką implementację?

Pozdrawiam,
Grzegorz

0
grzeswisniewski napisał(a)

Niestety w domenie aplikacji mogę tylko raz wywołać System.Windows.Application.

Dlaczego tylko raz ?

using System;
using System.Windows.Forms;

namespace Sample
{
    static class Program
    {        
        [STAThread]
        static void Main(String[] args)
        {
            Form1 form1 = new Form1();
            Application.Run(form1);
            if (form1.IsLogin)
            {
                Form2 main = new Form2(form1.LoginData);
                Application.Run(main);
            }
        }
    }
}

Właściwości IsLogin oraz LoginData dodałem na potrzeby przykładu.
Jak widać możesz bez problemu uruchomić dwa różne okna jedno po drugim.

0

Z Twojego kodu wynika, że do warstwy graficznej używasz Windows.Forms. Klasa Windows.Application należy dla klas WPF'a i tam zdecydowanie nie można stworzyć dwóch jej instancji w jednej domenie - zgłasza wyjątek.

Piszę to jednak z innego powodu, ponieważ znalazłem rozwiązanie, którym jest override metody OnStartup w której mogę wywołać wiele formularzy w takiej kolejności i zależnościach jakie chcę.

Pozdrawiam,
Grzegorz

1 użytkowników online, w tym zalogowanych: 0, gości: 1