Formy - problem z otwieraniem

0

Witam, mam problem z formami...

Piszę program, który wymaga logowania do pewnego serwera poprzez aplikację, którą napisałem w PHP.

Po włączeniu programu wyświetlam Form o nazwie: LoginForm
Jeżeli logowanie przebiegnie pozytywnie - wyświetlam MessageBox z odpowiednią informacją, w przeciwnym wypadku w ten sam sposób pokazuję błąd.

Teraz po pomyślnym zalogowaniu i wyłączeniu komunikatu chcę wyłączyć LoginForm i odpalić ProgramForm - tutaj zaczynają się schody.

Za zarządzanie Form'ami odpowiedzialna jest klasa BOTManager, która wygląda tak:

class BOTManager
    {
        private LoginForm LoginForm;
        private ProgramForm ProgramForm;

        public BOTManager()
        {

        }

        public void loginForm()
        {
            this.LoginForm = new LoginForm();
            Application.Run(this.LoginForm);
        }

        public void programForm()
        {
            this.ProgramForm = new ProgramForm();
            this.LoginForm.Close();
            Application.Run(this.ProgramForm);
        }

        public void login(string user, string passwd, string world)
        {
            WebClient webClient = new WebClient();
            byte[] reqHTML;

            reqHTML = webClient.DownloadData(String.Format("http://83.143.99.79/login.php?user={0}&pass={1}&world={2}", user, passwd, world));
            UTF8Encoding objUTF8 = new UTF8Encoding();
            if (bool.Parse(objUTF8.GetString(reqHTML)))
            {
                MessageBox.Show("Zalogowano pomyślnie!");    
                Program.u = user;
                Program.w = world;
                this.programForm();
            }
            else
            {
                MessageBox.Show("Niepoprawne dane!");
            }
        }
    }

Główna klasa programu wygląda następująco:

static class Program
    {
        static public string u, w;
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            BOTManager BOT = new BOTManager();
            BOT.loginForm();
        }
    }

Jak widać tworzę obiekt BOTManager i odpalam LoginForm - działa.
Teraz problem jest przy funkcji/metodzie o nazwie programForm, która według mnie powinna utworzyć obiekt typu ProgramForm, odpalić go jednocześnie zamykając LoginForm'a.

I tutaj zaczyna się rzucanie wyjątkami.
Wskazuje linijkę: this.LoginForm.close();
I rzuca wyjątkiem:

Object reference not set to an instance of an object.

Może to pytanie laika, ale wcześniej miałem przez 5 lat styczność właściwie tylko z PHP a tam obiekty troszkę inaczej wyglądają.

0

to znaczy, że gdzieś nie utworzyłeś instancji obiektu

0

Przecież wywołuję funkcję/metodę, która tworzy:

this.LoginForm = new LoginForm();
0

sproboj czegos takiego:

        public void programForm()
        {
            this.ProgramForm = new ProgramForm();
            this.ProgramForm.ShowDialog();
	    this.LoginForm.Close();
        }
0

Prawie działa, form kolejny się otwiera. Jednak LoginForm nie zostaje zamknięty i po wyłączeniu ProgramForm rzuca wyjątek.

0

Powiedzmy, że znalazłem TYMCZASOWE rozwiązanie, które mnie do końca nie zadowala (nie pozwoli mi się przelogować na inne konto)

Ogólnie w programie uruchamiam tak:

            LoginForm lf = new LoginForm();
            Application.Run(lf);
            if (lf.login == true)
            {
                Application.Run(new ProgramForm());
            }

Wiadomo przy logowaniu zmieniam login na true lub false, wyświetlam komunikat, zamykam okno i wszystko działa.
Ale powtarzam jest to rozwiązanie TYMCZASOWE bo nie pozwoli mi na przelogowanie się.

1

Najprostszy sposób na przelogowanie w takiej sytuacji to restart aplikacji. :)

0

TAKIE PROSTE!! A takie mądre :)

Powiedz mi tylko jak mam potem automatycznie uruchomić tą samą aplikację? Xd

1
 Application.Restart();
0

Dobrze gada! Polać mu! :)

Dziękuję ślicznie, zaznaczyłem "wartościowe posty" ;]

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