C# WinForms Gösterge Tablosu Formu İnşa Etmek
[[academy-video-youtube({"vid": "IOo1ZFtPOBI", "start_time": "0", "title": "C# Uygulaması Baştan Sona Ders 21 - Gösterge Paneli Formu", "creator": "Tim Corey", "length": "51s 42dk"})]]
Başlangıçtan Bitişe C# Uygulaması serisinin 21. dersinde Tim Corey, bir WinForms uygulamasında Turnuva Kontrol Paneli Formu'nu bağlamaya odaklanıyor. Bu form, uygulamanın başlangıç ekranı olarak hizmet verir ve kullanıcının mevcut bir turnuvayı yüklemek veya yeni bir turnuva oluşturmak için giriş noktası olarak işlev görür. WinForms gösterge paneli, kullanıcı eylemlerinin, kod tarafından ele alınan belirli olayları tetiklediği, event-driven (olay odaklı) fonksiyonelliğini kullanan bir Windows Forms programıdır.
Tim, bu dersin karmaşık kullanıcı arayüzü çalışmalarıyla ilgili olmadığını, daha ziyade verileri, modelleri, saklı yordamları ve formları temiz ve tutarlı bir şekilde bir araya getirmekle ilgili olduğunu açıklar. Not: WinForms, envanter yönetimi, CRM sistemleri ve muhasebe araçları gibi dahili şirket yazılımları için özellikle uygundur. Gerçek dünya uygulamasında bir WinForms kontrol panelinin nasıl çalıştığını gerçekten anlamak için, Tim turnuvaların yüklenmesi, modellerin dolması, veritabanı bağlantılarının yönetilmesi ve UI kontrollerinin bağlanması adımlarını tek tek yürütüyor.
Bu makalede, Tim'in tam olarak videosunu adım adım, bölüm bölüm takip ederek Zaman Damgalarıyla birlikte gösterge paneli formuna daha yakından bakacağız. WinForms uygulamaları genellikle hafiftir ve mükemmel performans sunar, bu da onları daha eski veya daha az güçlü donanımlar için ideal hale getirir.
Dashboard Formuna Giriş
En başta, Tim Ders 21'i tanıtıyor ve hedefi açıklıyor: Uygulama başladığında açılacak ilk form olacak Turnuva Panosu Formu'nu bağlamak.
Tim, bu formun kasıtlı olarak basit olduğunu belirtiyor. Sadece birkaç şey yapar:
- Var olan turnuvaların listesini yükler
Kullanıcının bir turnuva seçip yüklemesine olanak tanır
- Kullanıcının yeni bir turnuva oluşturmasını sağlar
İzleyicilere, bunun uzun ya da aşırı derecede karmaşık bir ders olmayacağını, ancak birçok önemli bölümüne değineceğini temin ediyor.
Gösterge Tablosu Formunun Sorumlu Olduğu Şeyler
Tim, kontrol paneli formunun iki temel sorumluluğu olduğunu açıklıyor:
Mevcut turnuvaları bir açılır menüye yükleme
- Kullanıcı eylemlerine bağlı olarak diğer formları açma
Eğer bir turnuva zaten varsa, kullanıcı onu seçebilir ve Turnuvayı Yükle'yi tıklayabilir (daha sonra bağlanacaktır). Kullanıcı yeni bir turnuva oluşturmak isterse, mevcut projede zaten var olan bir formu açan "Turnuva Oluştur" seçeneğine tıklar.
Bu noktada, Tim Turnuva Yükle düğmesinin henüz bağlanmadığını ve daha sonra bir derste ele alınacağını açıklıyor.
Açılır Menü için Turnuva Listesi Oluşturma
C# proje şablonunu seçtikten sonra, Visual Studio kullanıcı arayüzünü tasarlamanız için bir form açar.
Tim, formun arkada kalan koduna geçer ve açılır listenin bir destek listesinin olması gerektiğini açıklar. Formun tasarımcıda nasıl göründüğüne dikkat edin, kullanıcı arayüzü özelleştirmesi için hazır durumda. Açılır kutu turnuvaları göstermek için tasarlandığından, destek listesinin bir List<TurnuvaModeli> olması gerekir.
Özel bir liste olan tournaments'ı oluşturuyor ve yeni bir listeyi manuel olarak oluşturmaktansa verilerin, GlobalConfig bağlantısından gelmesi gerektiğini açıklıyor. Bu bağlantı, veri kaynağının SQL mi yoksa metin dosyaları mı olduğunu soyutlar.
Tim daha sonra GetTournament_All adındaki bir metodu çağırmaya çalışır, onun henüz mevcut olmadığını fark eder ve bu metodun veri erişim katmanına eklenmesi gerektiğini açıklar.
GetTournament_All'i Veri Katmanına Ekleme
Tim, SQL Connector'a geçiş yaparak eksik olan GetTournament_All metodunu uygular. Bu yöntemin bir liste içinde TournamentModel nesneleri döndüreceğini açıklar.
O, projede başka bir yerde kullanılan mevcut bir deseni kopyalar ve turnuvalar için uyarlar. Temel fark, bu yöntemin adlandırılmış bir saklı prosedür çağırmasıdır:
spTournaments_GetAllTim, bu saklı yordamın sadece temel turnuva verilerini aldığını açıklıyor:
Kimlik
Turnuva Adı
Giriş Ücreti
- Aktif durum
TurnuvaModelinin çok daha fazla özellik içerdiğini, bunun sadece ilk adım olduğunu belirtiyor.
Kısmi Model Dışlaştırmayı Anlamak
Tim, önemli bir kavram olan kısmi hidratasyonu açıklamak için duraksıyor.
Turnuva modeli takımlar, ödüller ve turlar içeriyor olsa da, bu özellikler henüz doldurulmamış durumda. Bu aşamada:
Takımlar boş
Ödüller boş
- Turlar boş
Bu noktada yalnızca temel turnuva özelliklerinin doldurulması beklenir, takımlar, ödüller ve turlar gibi ilişkili varlıklar ise daha sonra yüklene kadar boş kalır.
Tim, bunun kasıtlı olduğunu ve bu ilişkili varlıkların, temel turnuva kayıtları yüklendikten sonra doldurulması gerektiğini vurguluyor.
Her Turnuva İçin Ödülleri Doldurma
Tim, veritabanından döndürülen her turnuvayı tekrarlayan bir foreach döngüsü tanıtır.
Ödüller için, sürecin basit olduğunu açıklıyor:
Turnuva ID'si ile ödülleri getiren bir saklı yordam çağırın
- Sonucu T.Prizes'e ata
Stored procedure spPrizes_GetByTournament'u referans alıyor ve bunun verilen bir turnuvayla ilişkilendirilmiş tüm ödülleri döndürdüğünü açıklıyor.
Tim'in uygulama boyunca tekrarlayan bir şey olarak vurguladığı bu desen, temel veriyi yükleyip ardından çocuk veriyi kimliğe göre yüklemektir.
Takımları ve Takım Üyelerini Yükleme
Sonra, Tim girilen takımlara geçer.
Takımları yüklemenin iki aşamalı bir süreç olduğunu açıklıyor:
Turnuvayla ilişkili takımları yükleyin
- Her takım için, takım üyelerini yükleyin
Mevcut turnuvayla ilgili olan takımları almak için spTeams_GetByTournament adlı saklı bir prosedür kullanır.
Sonra, her bir takım için Tim, takım kimliği ile takım üyelerini yüklemek üzere mevcut bir yöntemi tekrar kullanır. Bu, dizinin önceki bölümlerinde yazılmış olan koda neredeyse tamamen benzediğine işaret ediyor, sadece turnuva özelindeki verilere uyarlanmış.
Turların Karmaşıklığını Tanıyalım
Tim, turların turnuva modelinin en karmaşık kısmı olduğunu açıklar.
Roundlar şu şekilde saklanır:
List<List<EşleşmeModeli>>Onları doldurmak için, Tim'in yapması gerekenler:
Turnuvanın tüm eşleşmelerini yükle
Her bir eşleşme için eşleşme girişlerini yükle
- Üst eşleşmeler ve kazananlar gibi ilişkileri çöz
İlk olarak saklı yordamları gözden geçiriyor:
spEşleşmeler_TournamentGöreGet
- spEşleşmeGirişleri_EşleşmeyeGöreGetir
Kazanan Kimlikleri ve İç İçe Modelleri Yönetme
Tim veri tabanlarıyla çalışırken yaygın bir sorunu belirtiyor:\ SQL kimlikler döndürür, ancak uygulama nesneler bekler.
Kazanan özelliği bir TeamModel'dir, ancak veri tabanı yalnızca bir WinnerId döndürür. Tim, iç içe geçmiş nesneleri SQL'den doğrudan dolduramayacağınızı açıklıyor.
Bunu çözmek için, modele geçici bir WinnerId özelliği ekliyor ve bu özellik yalnızca veri yükleme sırasında kullanılıyor. Tüm takımlar yüklendikten sonra, doğru TeamModel'ı Kazanan özelliğine atamak için ID'yi kullanıyor.
Eşleşme Girişlerini ve Üst Eşleşmeleri Doldurma
Her bir eşleşme için, Tim:
Eşleşme ID ile eşleşme girişlerini yükler
Geçerli takım ID'lerini kontrol eder
- İlişkileri çözmek için tüm takımların önbelleğe alınmış listesini kullanır
Değer olmadığında ID'lerin neden varsayılan olarak 0 olduğunu ve > 0 kontrolünün neden hayati önem taşıdığını açıklar.
Tim ayrıca üst eşleşmelerin, zaten yüklenmiş eşleşmelere referans verilerek, ve eşleşmelerin turun sırasına göre sıralandığını bilerek çözüldüğünü açıklar.
Turlar Yapısını Oluşturma
Tüm eşleşmeler tamamen doldurulduktan sonra, Tim turların nasıl oluşturulduğunu açıklar.
Tanıtır:
MevcutTur değişkeni
- MevcutSatır listesi
Eşleşmeler arasında döngü yaparken:
Tur numarası değişirse, önceki tur T.Turlar'a eklenir
Yeni bir tur listesi oluşturulur
- Eşleşmeler buna göre gruplandırılır
Tim mantığın net olduğundan emin olmak için tam bir örnek üzerinden geçer ve döngüleri ayırmanın kodu anlamayı kolaylaştırdığına vurgu yapar.
Gösterge Tablosu Açılır Menüsünü Bağlama
Visual Studio'daki Araç Kutusundan sürükleyerek forma etiketler, metin kutuları ve açılır menüler gibi genel kontroller ekleyebilirsiniz.
Gösterge Tablosu Formunda, Tim bir WireUpLists() yöntemi oluşturur.
Atar:
Verikaynağı, turnuvalar listesine
- GörüntülenenÖğe alanı TournamentName'e
Etiketler genellikle açılır menünün amacını açıklamak için kullanılır, metin kutuları ise formda kullanıcı girişi için kullanılabilir. Kullanıcı etkileşimlerini yönetmek için tasarımcıda bir düğmeye çift tıklayarak Form1.cs dosyasında otomatik olarak bir Tıklama etkinliği işleyici oluşturabilirsiniz.
Bu, açılır menünün nesne referansları yerine insan tarafından okunabilir isimler göstermesini sağlar.
SQL ve Metin Dosyası Bağlantılarını Test Etme
Tim uygulamayı her iki veri kaynağı ile çalıştırıyor:
Metin dosyası bağlantısı hemen çalışır
- SQL bağlantısı bir hata verir
Uygulamayı Çalıştır düğmesine tıklayarak veya Visual Studio'da F5 tuşuna basarak çalıştırabilirsiniz.
Hata mesajı üzerinden geçer, bu hatanın eksik parametreler nedeniyle olduğunu belirler ve birden fazla veri kaynağını entegre ederken bu tür hataların yaygın olduğunu not eder. Bu hata, turnuva kimliğinin saklı yordamlar için düzgün bir şekilde iletilmesiyle düzeltildi.
Hem ödüller hem de takımlar düzeltildikten sonra, Tim her iki veri kaynağının da şimdi doğru çalıştığını onaylar. Birçok veri kaynağını entegre edildiğinde hata bulmak ve düzeltmek, geliştirme sürecinin normal bir parçasıdır.
Turnuva Oluştur Düğmesini Bağlama
Son olarak, Tim Oluştur Turnuvası düğmesini etkinliklerini, özellikle Tıklama etkinliğini yöneterek bağlar.
Buton için olay işleme kodunun Form1.cs kod-arkası dosyasında yazıldığını, ancak Form1.Designer.cs dosyasında olmadığını açıklar. Form1.Designer.cs dosyası, Windows Forms için otomatik olarak UI kodu oluşturur ve el ile düzenlenmemelidir.
Düğme sadece:
Yeni bir Oluştur Turnuva form örneği oluşturur
- Show() çağrısı yapar
Kullanıcının turnuva oluştuktan sonra nereye gitmesi gerektiği konusundaki tasarım kararlarını tartışır ve doğrudan turnuva görüntüleyicisine gitmenin en mantıklısı olduğunu açıklar.
Sonuç ve Sırada Ne Var
Tim, yapılan işleri özetleyerek sonlandırır:
Gösterge tablosu turnuvaları yükler
Açılır menü doğru şekilde doldurulur
- Turnuva Oluştur formu başarıyla açılır
Bir turnuva oluşturulduktan sonra listenin yenilenmesinin daha sonra ele alınacağını belirtir.
Bir sonraki derste, Tim, turnuva sistemini hayata geçirmek için turlar, eşleşmeler, skorlar ve ilerlemenin uygulanacağı Turnuva İzleyici Formunu önizler. Dersin ilerleyen versiyonları, WinForms ve .NET'in yeni versiyon sürümleriyle ilgili özellik güncellemeleri ve iyileştirmeleri içerecektir.
Bu ders, WinForms gösterge tablosunun sadece bir kullanıcı arayüzü değil, modeller, veri erişimi ve navigasyon arasında bir koordinasyon noktası olduğunu gösteriyor—Tim'in dikkatle adım adım gösterdiği bir şey.
WinForms, stabilitesi, hızlı geliştirme hızı ve Windows işletim sistemi ile derin entegrasyonu nedeniyle oldukça alakalı kalmaya devam ediyor.

