2009-10-27 16 views
6

Windows Forms'u kullanma Kullanıcıya, kendiliğinden (Form1) olduğunu bildiren küçük bir giriş ekranına sahip olmak istiyorum, böylece ana uygulama (Form2), giriş yaptıktan sonra açılacaktır. Ancak Application.Run (Form1) kullandığımda, tüm uygulamayı kapattıktan sonra kapattığımı varsayalım.Windows Formları: Giriş yaptıktan sonra hangi uygulamayı çalıştırmak için ana uygulamayı oluşturun?

Görünmez Form2 kullanımı dışında başka bir yolu yok mu? Form2'yi çalıştırma ve kapatma gibi bir şey başlangıçta Form1'i çalıştırdı mı? Umarım sizin için anlamlı olur :)

+0

[Bu soruya cevabımı görün] (http://stackoverflow.com/questions/1623695/how-to-end-process-after-closing-whole-application-in-c-net/1623878#1623878) –

+0

MainForm Load olayından LoginForm'dan başlayarak kolayca uygulanabilir. Burada açıkladım: http://walaapoints.blogspot.com/2011/06/login-form-main-form.html –

cevap

10

http://msdn.microsoft.com/en-us/library/system.windows.forms.applicationcontext.aspx, System.Windows.Forms.ApplicationContext bir aşırı oluştur sonra onun kurucu Form2Form1 yaratı.

ApplicationContext nesnesini kabul eden Application.Run yükünü kullanın.

+3

+1. CodeProject (http://www.codeproject.com/KB/cs/applicationcontextsplash.aspx) 'de' ApplicationContext 'kullanarak ana formdan önce nasıl bir sıçrama ekranı oluşturulacağını gösteren bir yazı vardır, ancak aynı zamanda nasıl basit bir açıklaması vardır. her şey işe yarıyor. – Groo

5

ApplicationContext sınıfı ihtiyacınız olan şeydir. Araabileceğiniz Application.Run(ApplicationContext) aşırı yük var.

bir örnek için buraya bakınız:

-1

Bu yaklaşımı deneyin. Programınızın ana hattından ana form sınıfınızı oluşturun, bu sınıfın içinden bir giriş formuna çağrı yapan bir "git" işlevi vardır. Bu işlev true olarak geri dönerse, Application.Run (form) çağrısı ile devam edebilirsiniz.

MainForm form = new MainForm(); 
form.Show(); 
if (form.go()) 
{ 
    Application.Run(form); 
} 
else 
{ 
    form.Close(); 
} 

class MainForm 
{ 
    public bool go() 
    { 
    LoginFrom lf = new LoginForm() 
    if (lf.ShowDialog() != DialogResult.OK) 
    { 
     return false; 
    } 
    } 
} 

Belki de biraz basit ama doğru yönde gitmeniz gerekir.

3

gibi da program.cs (varsayılan adı) içinde ana başvuru formunu çalıştırmadan önce kimlik doğrulama formu arayabilirsiniz: Düzgün sadece bitirmek gerekir sonra kimlik doğrulaması halinde Form1 İçinde

static void Main() 
    { 
     Form1 f1 = new Form1(); 
     DialogResult dr = f1.ShowDialog(); 
     if (dr == DialogResult.OK) 
     { 
      Application.Run(new Form2()); 
     } 
     else 
     { 
      Application.Exit(); 
     } 
    } 

ile: kimlik doğrulama başarısız

this.DialogResult = DialogResult.OK; 
    this.Close(); 

, size çok fazla sadece aramak zorunda karar verirken Öyleyse onlara vb denemelerinin maksimum sayıda ver onları kimlik-girişimi yeniden izin verebilir

0
bool tipi ve değeri 'lcheck' 'yanlış'
  • Let form1 mesafesindedir ayarı
  • Git ayarları sekmesine özelliklerini proje

    1. Git proje özelliklerinde ayarları kullanarak deneyin ve oluşturmak ana form ve form2 formu ise
    2. kullanımlar oturum olan form1- FormLoad fonksiyonunda döngü

      while(System.properties.default.lcheck!=true) 
      { 
          authentication process: 
      } 
      
    3. gibi

    Not: Bu işlem hakkında bir şüphem var. Birisi, uygulamanın appdata klasöründen ayarları değiştirebilir.

  • İlgili konular