Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# kako ugasiti prethodnu formu.

[es] :: .NET :: .NET Desktop razvoj :: C# kako ugasiti prethodnu formu.

[ Pregleda: 1919 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksandrov

Član broj: 47782
Poruke: 161
*.dynamic.sbb.rs.



Profil

icon C# kako ugasiti prethodnu formu.04.09.2009. u 20:25 - pre 178 meseci
Pozdrav,
imam jedno pocetnicko pitanje:

Radim desktop aplikaciju VS C# 2008.
Sa ukljucenjem programa podigne mi se i frmLogin. Nakon unosa tacnih podataka za Username i Password uradim:

Code:

frmMain myMain = new frmMain()
myMain.Show();
this.Hide;


Nakon ovoga se otvara Main stranica programa.

Problem je sto kad pritisnem 'iksić' u gornjem desnom uglu za gasenje programa, aplikacija se ne ugasi nego frmLogin i dalje ostaje skriven.
Probao sam i sa this.Close(), medjutim to gasi celu aplikaciju.
Resenje problema po meni je da se iksic isprogramira da gasi celu aplikaciju ili da prilikom usnimavanja MyMain-a nekako uradim unload frmLogin-a;

Kako to da uradim?
Pomoc prijatelja? :)
---------------------
****
< 9 9 > My name
..( o ).. is
. . -- . .MX86251 ?
 
Odgovor na temu

marko1981
Marko Nikolic
Beograd

Član broj: 123059
Poruke: 144
*.ptt.rs.



Profil

icon Re: C# kako ugasiti prethodnu formu.04.09.2009. u 20:43 - pre 178 meseci
Prebaci instanciranje i prikazivanje obe forme u fajl Program.cs u Main() metodu.

Nešto poput:

Code:

static void Main()
{
   Application.EnableVisualStyles();
   Application.SetCompatibleTextRenderingDefault(false);

   bool flag = false; 

   using (frmLogin login = new frmLogin())
   {
      if ((login.ShowDialog() == DialogResult.OK) && login.IsValidLogin)
      {
         flag = true;
      }
   }

   if (flag)
   {
      using (frmMain myMain = new frmMain())
      {
         Application.Run(myMain);
      }     
   }
}


Ovako kako sam ovde napisao, trebalo bi i da klik na neki OK button u frmLogin formi postavi DialogResult property forme frmLogin na DialogResult.OK.

Verovatno ćeš dozvoliti više puta da se pogreši u logovanju. Za to možeš "obuhvatiti" ovaj deo sa FrmLogin jednim while-om recimo.
 
Odgovor na temu

Sapphire
Denis Biondić
.NET software developer
Nürnberg, Germany

Član broj: 213086
Poruke: 290
62.113.8.*



+6 Profil

icon Re: C# kako ugasiti prethodnu formu.04.09.2009. u 20:55 - pre 178 meseci
Što se tiče obrazloženja zašto ti se dešava to što se dešava, evo nekim jednostavnim jezikom ... Program ti ostaje upaljen jer "myMain" nije glavna forma aplikacije, koja je pokrenuta sa Application.Run() unutar Program klase (Program.cs file). Ova metoda započinje message loop na unesenoj formi, i aplikacija se automatski gasi pri gašenju ove forme, ili na poziv na Application.Exit() metodu.

Najjednostavnije rješenje koje je moguće je da unutar frmMain.FormClosing eventa pozoveš Application.Exit() (u svome prvobitnom programu sa bug-om), ali ti ovakav način programiranja i ovo rješenje nikako ne preporučavam, već ga samo navodim da znaš šta se u biti dešava "behind the scenes". Pokušaj ili prošli prijedlog, ili nešto kao slijedeće:

Code:
Application.Run(new MainForm())


a unutar MainForm.Load ili Shown događaja da pozoveš login formu sa

Code:
loginForm.ShowDialog()


Igraj se, istražuj :)
My programs don’t have bugs, they just develop random features.
 
Odgovor na temu

Aleksandrov

Član broj: 47782
Poruke: 161
*.dynamic.sbb.rs.



Profil

icon Re: C# kako ugasiti prethodnu formu.04.09.2009. u 22:03 - pre 178 meseci
:) to sa istrazivanjem
Code:

loginForm.ShowDialog()

sam vec probao. Dakle iz Application.Run sam pozvao frmMain a u frmMain_load sam uradio Login.ShowDialog.

Problem u ovom slucaju je taj sto je sa alt-f4 moguce iskljuciti login formu pa otici direktno na main stranicu...

Dakle da probam prvi predlog pa javljam
---------------------
****
< 9 9 > My name
..( o ).. is
. . -- . .MX86251 ?
 
Odgovor na temu

Aleksandrov

Član broj: 47782
Poruke: 161
*.dynamic.sbb.rs.



Profil

icon Re: C# kako ugasiti prethodnu formu.05.09.2009. u 00:08 - pre 178 meseci
@marko

Ovaj tvoj predlog radi kao lood.
promenio sam DialogResult atribut za btnLogin na OK i dodao bool IsValidLogin u frmLogin kojeg postavljam na true ako su zadovoljeni uslovi za login


Hvala Svima
---------------------
****
< 9 9 > My name
..( o ).. is
. . -- . .MX86251 ?
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C# kako ugasiti prethodnu formu.

[ Pregleda: 1919 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.