SORU
22 ŞUBAT 2010, PAZARTESİ


'Uygulama arasındaki fark ne.() Çalıştırın ve Form.() ShowDialog?

Benim uygulamada bir giriş formu göstermek istiyorum ve oturum açma eğer ana form başarılı olmuştur. Şu anda böyle bir şey yapıyorum:

var A = new LoginForm();
if ( A.ShowDialog() == DialogResult.OK )
    Application.Run(new MainForm());

Ama sonra merak - Application.Run() ne anlamı var merak ediyorum. Neden sadece (new MainForm()).ShowDialog() de değil mi? Ne fark eder? Ve istediğimi elde etmek için doğru yolu ne olurdu?

CEVAP
22 ŞUBAT 2010, PAZARTESİ


Application.Run(Form) bir ileti, geçerli iş parçacığı üzerinde döngü başlatır ve belirtilen formu görüntüler. Mesaj döngü şeklinde yanıt görünmesini sağlamak için Windows mesajları (örneğin, tuş vuruşlarını, fare tıklamaları boya hükümsüzlükler) almasını sağlar ve kullanıcı ile etkileşim. Form örnek ShowDialog() çağırdığınızda, aslında benzer bir şeyi yapar ve form için ShowDialog adı olmuştur kalıcı bir ileti döngüsü oluşturur.

İki arama arasında pek fark yoktur. Application.Run fazladan olay ana form kapatıldığında kaynakların bir toplama yapmak sağlayan (Application.ThreadExit) ekleyin.

Win uygulamaları başlatmak için önerilen yöntem Application.Run ama bu bir kural daha bir kongre daha olduğunu sanıyorum kullanıyor. Application.Run kullanmak için en büyük nedeni ise birden fazla olmayan kalıcı form açmak istiyorsanız. Bu kullanarak bunu yapabilirsiniz:

new Form().Show();
new Form().Show();
Application.Run();

Bu formları kalıcı olmalı ShowDialog() yöntemi kullanarak elde edebiliriz.


Ne bir oturum açma formu ve eğer giriş başarılı ise ana formu daha sonra Haritayı nasıl sorunuza gelince, bence gayet iyi:

if (new LoginForm().ShowDialog() == DialogResult.OK)
{
    Application.Run(new MainForm());
}

Alternatif eğer giriş başarılı olursa, tesisat kendiniz yapın ve LoginForm kapanış durumunda MainForm örneği açmaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dopelives

    Dopelives

    30 Temmuz 2009
  • SomeOne Pro

    SomeOne Pro

    25 EKİM 2013
  • theKGB65

    theKGB65

    24 Aralık 2007