2016-04-06 27 views
-3

Aracım için bir giriş oluşturmaya çalışıyorum ve bunu sıralıyorum fakat oturum açmaya bastığında (Child form) program döngülerinde ve kullanıcıdan yeniden oturum açmasını ister. 'Çıkış' düğmesine bastığımda farkettim ki, daha sonra Ana formu iyi yükler ama bunu istemiyorum. Kullanıcılarımın giriş yapmaya basmasını ve ardından Ana formuna gitmesini istiyorum. Bunun içine Form1_Load ana formu var önce çocuk formunu açmak için:Ebeveyn formu ve Loop C'de Çocuk formu #

 this.Hide(); 
     Form1 Main = new Form1(); 
     Main.Show(); 
+0

Lütfen Form Yükle olay işleyicinizin kalan kısmını göster. Orijinal Form1'inizi gizleyerek yeni bir tane oluşturup bunun yerine gösterdiğiniz gibi görünüyor. Muhtemelen Giriş formunu ana form olarak almalı ve gizlemelisiniz ve sadece oturum açma başarılı olursa Form1'i göstermelisiniz. –

cevap

0

iyi yolu işlemek için: çocuk formdaki 'Giriş' butonuna İçinde

 Login Log = new Login(); 
     Log.ShowDialog(); 

bu var Bu, formunuzun başlamasından ÖNCE oturum açma işlemlerini gerçekleştirir (örneğin, Program.cs dosyasında ancak uygulama başlatıldıktan sonra). Oturum açma formunuza bir değişken ekleyin (Yetkilendirme testinizi geçip geçmediğini gösteren E. bir boole) ve yetkilendirme durumunun ne olduğunu görmek için formun kapatıldığını kontrol edin. Bayrak yanlış olarak ayarlanırsa, bir iade yapabilir veya Application.Exit() yapabilirsiniz ve kullanıcı ana formu asla görmeyecektir.

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     SomeLoginForm Login = new SomeLoginForm(); 
     Login.ShowDialog(); 
     if (!Login.HasPassedAuthorization) 
     { 
      MessageBox.Show("Sorry you failed to pass the test! I'm kicking you out now!"); 
      Application.Exit(); // or do a "return;" 
     } 

     Application.Run(new Form1()); 
    } 
} 


static class SomeLoginForm() 
{ 
     internal bool HasPassedAuthorization; 

} 
+0

Soruyu yanlış anlamış olursam özür dilerim. Ana formu önce göstermeden bir giriş diyaloğunu göstermenin en iyi yolunu mu soruyorsun yoksa giriş diyalogunu gösterirken ana formu göstermek istiyorsan, emin değilim. Bana bildirin ve cevabımı en iyi şekilde yardımcı olabilmek için yardımcı olabilirim. –