C# Uygulaması Oluşturma
Windows Forms Uygulaması, Microsoft'un .NET Framework'ü dahilinde yer alan bir grafiksel kullanıcı arayüzü API'sidir. Zengin masaüstü uygulamaları oluşturmak için bir platform sağlar ve Tim Corey'nin ".NET 6'da Windows Forms Giriş" videosu, bu teknolojiyi kullanarak uygulamalar geliştirme üzerine kapsamlı bir giriş sunar. Aşağıda, Tim'in videosundan ilham alarak, videoda ele alınan kavramlara derinlemesine bir bakış bulunmaktadır.
Windows Forms'a Başlarken
Tim Corey, rehberliğine .NET 6'da yeni bir Windows Forms projesi kurarak başlıyor. Başlangıç noktası, bir proje oluşturmak için Visual Studio'da yeni bir proje seçeceği yapmayı kapsar, ardından uygun şablonları seçer ve son olarak ilk formu (Form1) kurar. Bu, yeni başlayanların bir projeyi başlatmayı ve ilk formlarını çalıştırmayı nasıl sağlayacaklarını anlamaları açısından önemlidir.
Projeyi Kurma:
Tim, Windows Forms uygulamaları için doğru şablonları ve yapılandırmaları seçmenin önemini vurgulayarak Visual Studio'da yeni bir proje oluşturma sürecini anlatır. Bu, proje türü olarak "Windows Forms Uygulaması" seçilmesini, projeye uygun bir ad verilmesini, bu durumda "WinFormsDemoApp" adını vermeyi ve hedef çerçeve olarak .NET 6.0'ı seçmeyi içerir (2:05).

Proje penceresi açıldığında oluştur'a tıkladıktan sonra, kod düzenleyicisinin sol tarafında çözüm gezgini penceresinde tüm şablon dosyalarıyla birlikte varsayılan bir Windows Form göreceksiniz. Varsayılan form, Windows Forms uygulamasının başlığını ve küçültme, büyütme ve kapatma düğmesi kontrollerini içeren temel Windows kullanıcı arayüzü yapısına dayanır.

Windows Forms ile Hızlı Uygulama Geliştirme
Tim, videosunda Windows Forms kullanarak Hızlı Uygulama Geliştirme (RAD) kavramını keşfeder, prototipler ve kanıtlar oluşturma konusunda kolaylığını ve verimliliğini vurgular.
Hızlı Uygulama Geliştirmeyi Anlamak
Tim, RAD kavramını hızla doğrulamak ve fikirler geliştirmek için uygulamalar oluşturmayı odaklayarak tartışmaya başlar.
Bir Kavram Kanıtı Oluşturma
Araç Kutusu penceresini kullanma: Tim, geliştiricilerin uygulama geliştirmek için önemli bir kontroller çeşitliliği içeren Visual Studio'daki Araç Kutusu penceresini nasıl kullanabileceklerini gösterir.
- Sürükle ve Bırak İşlevselliği: Butonlar, metin kutuları, etiketler ve onay kutuları gibi tasarım yüzeyine kontrol ekleme sürecini nasıl gösterir.
Temel Bir Uygulama Oluşturma
Yerleşim ve Tasarım: Tim, form üzerindeki kontrolleri ayarlama esnekliğini, Visual Studio'nun hizalama kılavuzlarıyla nasıl hizalanacağını açıklar.
- Kontrolleri Kopyalama ve Yapıştırma: Ctrl+C ve Ctrl+V gibi klavye kısayollarını kullanarak kontrolleri hızlıca çoğaltma ve tasarım sürecini hızlandırmayı gösterir.
Fonksiyonel Elemanlar
Kontrolleri Yapılandırma: Tim, Özellikler penceresinde özellikleri ayarlayarak İlerleme Çubuğu gibi kontrol yapılandırmayı örneklendirir. Bu etkileşim, uygulamanın görsel bileşenlerine gerçek zamanlı değişiklikler gösterir.
- Etkileşimli Önizleme: Uygulamayı çalıştırarak, Tim bu temel bileşenlerin etkileşimli olarak nasıl kullanılabildiğini, işlevselliği henüz tamamen uygulanmamış olsa bile kullanıcılara nasıl gösterdiğini sunar.

Tasarımcı Hatası
Tim Corey, Windows Forms tasarımcısının hangi şekillerde bozulabileceğini ve geliştiricilerin genellikle bu sorunu nasıl karşıladığına dair çeşitli yolları açıklar.
Beklenmedik Değişiklikler: Geliştiriciler, Form1.Designer.cs'deki otomatik oluşturulmuş kodun kritik parçalarını, örneğin olay işleyicileri veya kontrol başlatma kodunu yanlışlıkla siler veya değiştirirse, tasarımcıyı başarısızlığa uğratabilir.
- Tutarsız Kod Değişiklikleri: Manuel olarak düzenlenen kod ile tasarımcı tarafından oluşturulan kod arasında tutarsızlıklar olduğunda hatalar ortaya çıkabilir. Örneğin, bir olay işleyicinin bir sınıf (Form1.cs) içinde ancak diğerinde (Form1.Designer.cs) kaldırılması, tasarımcının formu doğru şekilde yükleyememesiyle sonuçlanan bir uyumsuzluğa yol açabilir.
Hata Mesajlarını Okuma
Tim Corey, Visual Studio tarafından sağlanan hata mesajlarının dikkatli bir şekilde yorumlanmasının önemini vurgular sahiptir.
Hata Mesajı Detayları: Tim, tasarımcının nerede ve neden bir sorunla karşılaştığını belirten "153. satırda 'form1_load' bilinmeyen adı işleyemeyen tasarımcı" gibi belirli hata mesajlarına vurgu yapar.
- Çözüm için Rehberlik: Hata mesajları genellikle, oluşturulmuş koda yapılan değişikliklerin geri alınması veya tüm sınıflarda (Form1.cs ve Form1.Designer.cs) tutarlılığı sağlama gibi uygulanabilir adımlar sunar.
Olay İşleyiciyi Diğer Kısmi Sınıftan da Kaldırma
Tim, formun kısmi sınıfları arasında tutarsız olay işleyici değişikliklerinden kaynaklanan tasarımcı sorunlarını çözmenin pratik bir çözümünü gösterir.
Örnek Senaryo: Bir olay işleyiciyi (Form1_Load) bir kısmi sınıfta (Form1.cs) silmenin ancak diğerinde (Form1.Designer.cs) yapılmamasının, tasarımcının formu düzgün bir şekilde yükleme yeteneğini bozabileceğini açıklar.
- Tekdüze Değişiklikler: Tüm değişikliklerin her iki kısmi sınıfta da tutarlı bir şekilde uygulanmasını sağlamak, geliştiricilerin Visual Studio'yu yeniden başlatma veya projeyi yeniden oluşturma gibi köklü önlemlere başvurmaksızın Windows Forms tasarımcısının işlevselliğini etkili bir şekilde geri yüklemesini sağlar.
Windows Forms'da Diğer Etkinlikleri Yönetme
1. Etkinlik İşleme Mekanizması
Tim, Windows Forms'da olay işleme mekanizmasını açıklar. Windows Forms tasarımcısını kullanırken, Tim, bir kontrol (örneğin bir form) üzerindeki çift tıklamalarının o kontrol için varsayılan bir olay işleyici oluşturduğunu belirtir. Örneğin, forma çift tıklamak bir Yükleme olay işleyici oluşturur. Tim, geliştiricilerin olay işleyicinin içindeki kodu silip olay işleyicinin kendisini kaldırmazlarsa, bunun tasarımcının formun işlenmesini bozduğunu uyarır. Bu, tasarımcının görsel düzeni koda çevirdiği için, formun çalışma zamanında doğru şekilde işlenmesi için gereklidir.
2. Bir Sınıf Olarak Formu Anlamak
Tim, Windows Forms'un aslında Form'den türetilmiş sınıflar olduğunu ve form düzeni, pencere yönetimi (küçült, büyüt, kapat düğmeleri), yeniden boyutlandırma yetenekleri ve daha fazlası gibi işlevsellikler sağladığını belirtiyor. Tim'e göre, bu miras, geliştiricilerin önceden oluşturulmuş UI bileşenlerinden (Buton, Metin Kutusu, Etiket vb.) faydalanmalarına ve bunların özelliklerini ve yöntemlerini değiştirerek onları manipüle etmelerine olanak tanır.
3. Özellikleri Manipüle Etme
Videonun 29:16'dasında, Tim Corey, Visual Studio'nun Özellikler penceresinde görünen Windows Forms'daki özelliklerin geliştiricilerin görsel elemanları yapılandırabilmelerini nasıl sağladığını gösterir. Tim, bu özelliklerin hem tasarım zamanında hem de çalışma zamanında değiştirilebildiğini vurgular, kontrollerin davranışlarını ve formlarında nasıl göründüklerini etkilediğini belirtir.
4. Birden Fazla Örnek Oluşturma
Tim, Windows Forms'taki her bir formun (Form1, Form2, vb.) sınıfın bir örneği (Form) olduğunu açıklıyor. Geliştiriciler, bir uygulama içinde birden çok pencereyi etkili bir şekilde yönetmek için dinamik olarak birden fazla örnek oluşturabilirler. Tim, bu yeteneğin hızlı uygulama geliştirme (RAD) kolaylaştırdığını, formların hızla tasarlanmasını, özelleştirilmesini ve karmaşık kullanıcı arayüzleri oluşturmak için birbirine bağlanmasını sağladığını belirtir.
5. Uygulama Başlatma Yapılandırması
Program.cs içindeki Main yöntemi, hangi formun (Form1, Form2, vb.) ilk olarak başlatılacağını belirleyerek uygulamanın başlangıç noktasını belirler. Tim, bu başlangıç formunu değiştirmenin, kullanıcıların uygulamayı başlattıklarında sunulan ilk görünümü değiştirerek, uygulamanın akışını ve kullanıcı deneyimini etkilediğini vurgular.
Windows Forms'da Menüler ve Araç Çubukları
WinForms'un çok yönlülüğünü Tim, menü ve araç çubuklarının nasıl gösterir. Form içinde bu elemanları eklemek ve özelleştirmenin ne kadar kolay olduğunu açıklar. İşte Tim'in ele aldığı ana noktalar:
Bir Durum Çubuğu Eklemek
Tim Corey, bir StatusStrip kontrolü ekleyerek kullanıcı etkileşimini nasıl geliştireceğini gösteriyor. Bu kontrol, bir ToolStripProgressBar ve ToolStripStatusLabel gibi bileşenleri içerir. Visual Studio'da sürükle ve bırak işlevselliğini kullanarak, geliştiriciler bu elemanları hızla ekleyerek görevler sırasında ilerleme güncellemelerini veya durum mesajlarını görüntüler.
Menü Şeritlerini Özelleştirme
Corey, Windows Forms uygulamaları için menü şeritleri (MenuStrip) tasarlarken Windows standartlarına uymanın önemini vurguluyor. Klavye komutları kullanarak menülerde gezinmeyi sağlamak için kısayol tuşlarını belirtmek üzere & işaretini ve erişilebilirlik için alt çizgi (_) kullanılacağını açıklar. Örneğin, &Dosya'yı atamak ve &Çıkış'ı E olarak vurgulamak, kullanıcıların fare etkileşimlerine bağlı kalmadan komutlara hızlıca erişip çalıştırmalarını sağlar.
Alt Menü ve Etkinlik Oluşturma
Corey, MenuStrip altına alt menüler oluşturmayı ve menü öğeleriyle olayları ilişkilendirmeyi nasıl yapacağını gösteriyor. Menü öğelerinin üzerine çift tıklayarak, geliştiriciler olay işleyicileri oluşturabilir ve mesajları görüntülemek (MessageBox) veya uygulamayı kapatma gibi eylemleri gerçekleştirmek (this.Close()) gibi işlevsellikler uygulayabilir. Kod okunabilirliğini ve ölçeklenebilirliği sağlamak için uygun adlandırma kurallarına ve en iyi uygulamalarına bağlı kalmanın önemini vurgular.

Tim Corey Tarafından En İyi Yöntemler ve İpuçları
Tim Corey, WinForms projesine doğru bir başlangıç yaparak, varsayılan formu (Form1) daha anlamlı bir adla, örneğin MainForm ile yeniden adlandırmanın önemini vurgular (1:02:01). Bu basit adım, projenizde tutarlılığı sağlarken, kod tabanınızda referansları sorunsuz bir şekilde günceller.
Form Özelliklerini Özelleştirme
Tim son olarak, form özelliklerini erken bir aşamada özelleştirmenin önemine vurgu yapar. Formun kendisinin Metin özelliğini, Visual Studio ortamındaki düzeni ve netliği artırma amacıyla yansıtması (örneğin "Tim Corey tarafından Ana Form") şekilde ayarlamak, organizasyonu güçlendirir. Ayrıca, yazı tipi boyutunu (tipik olarak yaklaşık 14-18 puan) ve form boyutunu (genişlik ve yükseklik) doğru şekilde ayarlamak, diğer kontrollerin düzenini bükmeden okunabilirliği sağlar.
Kontrol Özelliklerini Yönetme
Corey, kontroller eklendikten sonra form genelinde ayarlar değiştirilirken varsayılan kontrol özelliklerinin tuzaklarına işaret eder. Ardından bir etiket, metin kutusu ve bir buton ekler ve bunun form için seçilen yazı tipi boyutunu otomatik olarak nasıl aldığını gösterir. Yazı tipi boyutunu değiştirmenin tüm kontrolleri nasıl etkilediğini gösterir, geliştiricilere bu ayarların erken belirlenmesi gerektiğini, böylece daha sonra beklenmeyen düzen değişikliklerini önlemesi gerektiğini belirtir. Her kontrol için özellik değeri değiştirirseniz, formun varsayılan değerleri alınmaz (1:06:33).
Kontroller İçin Adlandırma Kuralları
Tim'in videosunda alınacak bir diğer kilit nokta, kontroller için anlamlı adlandırma kuralları kullanmaktır. Geleneksel "lblFirstName" veya "txtFirstName" yerine, Corey, değişkenler için camelCase kullanmayı (firstNameLabel, firstNameTextBox) ve kontrol adını sona eklemeyi savunuyor.
Olay İşleme ve Adlandırma Kuralları
Tim'in savunduğu dikkat çekici bir uygulama, kontrolleri adlandırma ve olayları ele alma yöntemlerini tutarlı bir şekilde adlandırmaktır. Kontrolleri (sayHelloButton, firstNameTextBox) baştan itibaren içgüdüsel olarak adlandırarak, geliştiricilerin olay işleme sürecini hızlandırmasını sağlar. Bu yaklaşım, formlar arasında birden fazla olay ele alırken kafa karışıklığını önler ve bakım kolaylığı sağlar.
Tim, potansiyel olarak farklı şekillerde adlandırılan butonlar ile varsayılan isimde bırakmanın farkını gösterir. Bu yaklaşım modern kodlama uygulamalarıyla hizalanır, hızlı arama imkanı sunar, okunabilirliği artırır ve her kontrolün amacını anlamayı kolaylaştırır.
Sekme Sırası ve Erişilebilirlik Uygulama
Ele alınan bir diğer önemli konu, kontroller için sekme sırasının ayarlanmasıdır. Tim, kullanıcılara Sekme tuşunu kullanarak form boyunca mantıklı bir şekilde gezinebilmesini sağlamak için TabIndex özelliğinin nasıl kullanılacağını açıklar. Bu, sadece kullanıcı deneyimini artırmakla kalmaz, aynı zamanda klavye navigasyonuna güvenen kullanıcılar için erişilebilirliği de iyileştirir.
Formlar Arasında Veri Aktarma
WinForms yeteneklerini genişleten Tim, birden fazla formda veri geçişinden bahseder. Veri alışverişini kolaylaştırmak için formlarda yapıcı tanımlamayı gösterir. Bu teknik, geliştiricilerin yeni formları belirli verilerle başlatmasına olanak tanır, uygulama tasarımında esnekliği artırır.
Sonuç
Tim Corey'nin .NET 6'da Windows Forms rehberi, C# kullanarak masaüstü uygulama geliştirme öğrenmek isteyen herkes için değerli bir kayaktır. Video, temel kurulumdan ileri düzey kontrollere ve en iyi uygulamalara kadar geniş bir konu yelpazesini kapsar ve profesyonel Windows Forms C# uygulamaları oluşturmak için sağlam bir temel sunar.
Daha fazla bağlam ve ek eller üzerinde kodlama örnekleri ile ayrıntılı bir yürütme için, Tim Corey'in tam öğretici videosunu buradan izleyebilirsiniz.

