Bir C# Uygulaması Oluşturma
Windows Forms Uygulaması, Microsoft'un .NET Framework'ünün bir parçası olarak dahil edilmiştir ve bir grafiksel kullanıcı arabirimi API'sidir. Windows Forms'a Giriş - .NET 6 konulu Tim Corey'nin videosu, bu teknolojiyi kullanarak uygulamalar oluşturma konusunda kapsamlı bir giriş sunuyor. Aşağıda, videoda ele alınan kavramların Tim'in sunumundan esinlenerek derinlemesine incelemesi yer almaktadır.
Windows Forms ile Başlarken
Tim Corey, .NET 6'da yeni bir Windows Forms projesi kurarak eğitimine başlar. Başlangıç noktası, doğru kalıpları seçip görünümü gösterip başlangıç formunu (Form1) kurmayı kapsar. Bu, yeni başlayanlar için bir projeye nasıl başlanacağını ve ilk formların nasıl çalıştırılacağını anlamak açısından kritiktir.
Proje Ayarlama:
Tim, Windows Forms uygulamaları için doğru kalıpların ve yapılandırmaların seçimi üzerinde durarak Visual Studio'da yeni bir proje oluşturma sürecini dikkatlice anlatır. "Windows Forms Uygulaması" türünü seçmeyi, projeyi doğru biçimde adlandırmayı — bu durumda "WinFormsDemoApp" — ve hedef çerçeve olarak .NET 6.0'ı seçmeyi kapsar (2:05).

Proje penceresi açıldığında oluştur'a tıkladıktan sonra, kod düzenleyicisinin sol tarafındaki çözüm gezgin penceresinde tüm şablon dosyalarıyla birlikte bir varsayılan Windows Formu bulacaksınız. Varsayılan form, Windows kullanıcı arayüzü yapısına dayalıdır ve Windows Forms uygulamasının başlığını içeren bir başlık çubuğu ve daraltma, büyütme ve kapatma kontrol düğmelerine sahiptir.

Windows Forms ile Hızlı Uygulama Geliştirme
Tim videoda, prototipler ve kavram kanıtları oluşturmanın kolaylığı ve verimliligi üzerinde durarak Windows Forms kullanılarak Hızlı Uygulama Geliştirme (RAD) kavramını keşfeder.
Hızlı Uygulama Geliştirme Anlamak
Tim, RAD konseptini tartışarak başlar, bu da fikirleri ve işlevselliği doğrulamak için hızlı bir şekilde uygulamalar geliştirmeye odaklanır.
Bir Kavram Kanıtı Oluşturma
Araç Kutusu penceresini kullanma : Tim, Visual Studio'daki uygulama geliştirme için gerekli olan çeşitli kontrolleri içeren Araç Kutusu penceresini geliştiricilerin nasıl kullanabileceklerini gösterir.
- Sürükle-Bırak İşlevselliği: Düğmeler, metin kutuları, etiketler ve onay kutuları gibi tasarım yüzeyine kontrollerin sürüklenip bırakılması sürecini açıklar.
Temel Bir Uygulama Yaratma
Düzen ve Tasarım: Tim, form üzerinde görsellerin düzenlenme esnekliğini, onları Visual Studio'nun hizalama kılavuzları kullanarak hizalamaya açıklıyor.
- Kontrolleri Kopyalama ve Yapıştırma: Tasarım sürecini hızlandıran Ctrl+C ve Ctrl+V gibi klavye kısayolları kullanarak geliştiricilerin kontrolleri nasıl hızlı bir şekilde çoğaltabileceğini gösterir.
Fonksiyonel Unsurlar
Kontrolleri Yapılandırma: Tim, özellikleri doğrudan Özellikler penceresinde ayarlayarak İlerleme Çubuğu gibi kontrollerin yapılandırılmasını örnekler. Bu etkileşim, uygulamanın görsel bileşenlerinde gerçek zamanlı değişiklikler yapılmasını gösterir.
- Etkileşimli Önizleme: Tim, uygulamayı çalıştırarak, bu temel bileşenlerin hala tam olarak uygulanmasa bile kullanışlı olabileceğini gösterir.

Tasarımcı Kırık Hatası
Tim Corey, Windows Forms tasarımcısının çeşitli yollarla nasıl bozulabileceğini ve geliştiricilerin bu sorunla karşılaşma biçimlerini açıklıyor.
Beklenmeyen Değişiklikler: Geliştiriciler, Form1.Designer.cs'deki otomatik oluşturulmuş kodun önemli kısımlarını, olay işleyicilerini veya kontrol başlatma kodunu yanlışlıkla siler veya değiştirirse, tasarımcının başarısız olmasına neden olabilir.
- Tutarsız Kod Değişiklikleri: Manuel olarak düzenlenmiş kod ve tasarımcı tarafından oluşturulan kod arasında tutarsızlıklar olduğunda hatalar çıkabilir. Örneğin, bir olay işleyicisinin bir kısmi sınıfta (Form1.cs) kaldırılması ancak diğerinde (Form1.Designer.cs) kalması, tasarımcının formu doğru bir şekilde yüklemesini engelleyen bir uyumsuzluğa yol açabilir.
Hata Mesajlarını Okumak
Tim Corey, Windows Forms tasarımcısı ile ilgili sorunlarla başa çıkarken, Visual Studio tarafından sağlanan hata mesajlarının dikkatlice yorumlanmasının önemini vurgular.
Hata Mesajı Detayları: Tim, tasarımcının neden bir sorunla karşılaştığını ve nerede olduğunu gösteren "Tasarlayıcı, yükleme olayına 'form1_load' atıfını satır 153'te işleyemez" gibi belirli hata mesajlarını vurgular.
- Çözüm için Kılavuz: Hata mesajları, üretilen koda yapılan değişikliklerin geri alınması veya tüm kısmi sınıflarda (Form1.cs ve Form1.Designer.cs) tutarlılık sağlanması gibi eyleme geçirilebilir adımlar sağlar.
Diğer Kısmi Sınıfta da Olay İşleyici Kaldırma
Tim, formun kısmi sınıfları arasında tutarsız olay işleyici değişikliklerinin neden olduğu tasarımcı sorunlarını çözmek için pratik bir çözüm sunar.
Örnek Senaryo: Geleneksel önlemler uygulamadan, Visual Studio'yu yeniden başlatma veya projeyi yeniden oluşturma gibi büyük adımlar gerektirmeyen çözümler önerir.
- Tek tip Değişiklikler: Tüm değişikliklerin her iki kısmi sınıfta da tutarlı bir şekilde uygulanmasını sağlayarak, geliştiriciler Windows Forms tasarımcısına işlevselliği etkili bir şekilde geri kazandırabilirler.
Windows Forms'da Diğer Olayları Yönetme
1. Olay İşleme Mekanizması
Tim, Windows Forms'da olay işleme mekanizmasını açıklar. Windows Forms tasarımı kullanıldığında, Tim bir kontrol (örneğin, bir form) üzerinde çift tıklamanın, o kontrol için varsayılan bir olay işleyici oluşturduğunu not eder. Örneğin, formun üzerine çift tıklamak, bir Yükleme olay işleyicisi oluşturur. Tim, geliştiricilerin işleyicinin içindeki kodu siler ve olay işleyicisini kendisini kaldırmadan bırakması durumunda tasarımcıda formun render edilmesini bozacağını uyarır. Bunun nedeni, tasarımcının görsel düzeni koda dönüştürmesidir, bu da formun çalışma zamanında doğru şekilde render edilmesi için esastır.
2. Bir Sınıf Olarak Formu Anlamak
Tim, Windows Formlarının esasen Form'den türetilen sınıflar olduğunu ve form düzeni, pencere yönetimi (küçültme, büyütme, kapatma butonları), yeniden boyutlandırma gibi işlevsellikler sağladığını anlatıyor. Tim, geliştiricilerin önceden oluşturulmuş UI bileşenlerini (düğme, metin kutusu, etiket v.b.) kullanmalarına ve özelliklerini ve yöntemlerini değiştirerek onları manipüle etmeleri için bu alt yapıdan faydalanabileceklerini belirtir.
3. Özellikleri Manipüle Etmek
Videoda, 29:16'da, Tim Corey, Visual Studio'nun Özellikler penceresinde görülen, etiketler (Metin özelliği), düğmeler (Metin özelliği, Tıklama olayı) ve ilerleme çubuklarında (Değer özelliği) kullanılan özelliklerin görsel elemanları nasıl konfigüre ettiğini gösterir. Tim, bu özelliklerin tasarım zamanında ve çalışma zamanında modifiye edilebileceğini ve kontrollerin formda nasıl davranacağını ve görüneceğini etkilediğini vurguluyor.
4. Birden Fazla Örnek Oluşturma
Tim, Windows Formlarındaki her formun (Form1, Form2, vb.) Form sınıfının bir örneği olduğunu açıklıyor. Birden fazla örneğin dinamik olarak oluşturularak, geliştiriciler bir uygulama içerisinde birden fazla pencereyi etkin bir şekilde yönetebilirler. Tim, bu özelliğin hızlı uygulama geliştirmeyi kolaylaştırdığını ve formların hızlı bir şekilde tasarlanıp, özelleştirilip, karmaşık kullanıcı arayüzleri oluşturmak için birbirine bağlanabileceğini belirtiyor.
5. Uygulama Başlangıç Konfiğürasyonu
Program.cs'deki Main metodu, Application.Run(new Form1()) kullanarak, hangi formun (Form1, Form2, vb.) ilk önce başlatılacağını belirleyerek uygulamanın başlangıç noktasını belirler. Tim, bu başlangıç formunun değiştirilmesinin, kullanıcılar uygulamayı başlattığında sunulan ilk bakış açısını değiştirerek, uygulamanın akışını ve kullanıcı deneyimini etkilediğini vurgular.
Windows Forms'da Menüler ve Araç Çubukları
Tim, WinForms'un menüler ve araç çubuklarını göstererek çok yönlülüğünü sergiler. O, bu unsurların form içinde nasıl kolaylıkla eklenip özelleştirilebileceğini açıklar. Tim'in ele aldığı kilit noktalar şunlardır:
Bir Durum Çubuğu Ekleme
Tim Corey, bir forma StatusStrip denetimi ekleyerek kullanıcı etkileşimini nasıl artıracağını gösteriyor. Bu denetim, bir ToolStripProgressBar ve ToolStripStatusLabel gibi bileşenler içerir. Visual Studio'da sürükle-bırak işlevselliği kullanarak, geliştiriciler bu öğeleri hızla entegre ederek görevler sırasında ilerleme güncellemeleri veya durum mesajları gibi dinamik bilgileri gösterebilir.
Menü Şeritlerini Özelleştirmek
Corey, Windows Forms uygulamaları için menü şeritleri (MenuStrip) tasarlarken Windows standartlarına uymanın önemini vurguluyor. Klavyeye erişim kısayollarını atamak için & işareti ve erişilebilirlik için _ işaretinin nasıl kullanılacağını, kullanıcıların klavye komutlarını kullanarak menüler arasında gezinebilmelerini sağladığını açıklar. Örneğin, &File ve Altı Çizilmiş &Exit E olarak atanırsa, kullanıcılar komutları hızla fare etkileşimlerine güvenmeden erişip çalıştırabilirler.
Alt Menüler ve Olaylar Yaratmak
Corey, MenuStrip altında alt menüler oluşturmayı ve menü öğeleriyle olayları ilişkilendirmeyi nasıl yapacağını gösteriyor. Menü öğelerine çift tıklayarak, geliştiriciler olay işleyicileri oluşturabilir ve mesaj gösterme (MessageBox) veya uygulamayı kapatma gibi eylemler gerçekleştirme (this.Close()) gibi işlevsellikleri uygulayabilir. Kod okunabilirliğini ve ölçeklenebilirliğini korumak için uygun adlandırma kurallarını ve en iyi uygulamaları benimsemenin önemini vurgular.

Tim Corey'den En İyi Uygulamalar ve İpuçları
Tim Corey, varsayılan formu (Form1) daha anlamlı bir adla, örneğin MainForm ile (1:02:01), değiştirerek bir WinForms projesine doğru başlamayı vurgular. Bu basit adım, projeniz genelinde tutarlılığı sağlar ve kod tabanınızdaki referansları sorunsuzca günceller.
Form Özelliklerini Özelleştirmek
Daha sonra, Tim form özelliklerini erken özelleştirmenin önemini vurgular. Formun amacını yansıtacak şekilde (örn. "Tim Corey Tarafından Ana Form") Metin özelliğini ayarlamak, Visual Studio ortamında netliği ve organizasyonu artırır. Ek olarak, font boyutunu (genellikle 14-18 puan civarında) ve form boyutunu (genişlik ve yükseklik) düzenli olarak ayarlanması, diğer kontrol elemanlarının düzenini bozmadan okunabilirliği garanti eder.
Kontrol Özelliklerini Yönetmek
Corey, kontrol elemanları ekledikten sonra form genelinde yapılan ayarlamalar sonucunda varsayılan kontrol özelliklerinin sorunlar yaratabileceğini vurgular. Daha sonra forma bir etiket, metin kutusu ve bir buton ekleyerek form için seçilen yazı tipi boyutunu otomatik olarak aldığını gösterir. Yazı tipi boyutunu değiştirdiğinde tüm kontrol elemanlarının etkilendiğini gösterir ve geliştiricilerin istenmeyen düzen değişikliklerinden kaçınmak için bu ayarları önceden kurmalarını önerir. Eğer her kontrol için özellik değerlerini değiştirmezseniz, formun varsayılan değerlerini almaz (1:06:33).
Kontrol Elemanları için Adlandırma Kuralları
Tim'in videosundan önemli bir sonuç, kontrol elemanları için anlamlı adlandırma kuralları kullanmaktır. Geleneksel "lblFirstName" veya "txtFirstName" yerine, Corey değişkenler için camelCase (firstNameLabel, firstNameTextBox) kullanımını ve kontrol adını sona eklemeyi önerir.
Olay İşleme ve Adlandırma Kuralları
Tim'in savunduğu dikkate değer bir uygulama, kontrol elemanlarını ve olayları tutarlı bir şekilde adlandırmaktır. Kontrollüleri ilk baştan itibaren sezgisel olarak adlandırarak (sayHelloButton, firstNameTextBox), geliştiricilerin olay işlemesini sadeleştirdiğini belirtir. Bu yaklaşım, formlar arasında birden fazla olay işlemekle ilgili kafa karışıklığını önler ve sürdürülebilirliği güçlendirir.
Bu noktayı göstererek, butonları uygun şekilde adlandırmanın, onları varsayılan olarak bırakmak yerine (örneğin button1, button2) daha uygun olduğunu gösterir. Bu yöntem, modern kodlama uygulamalarıyla uyumlu olup hızlı arama yapılmasına olanak tanır ve her bir kontrol elamanının amacını anında anlamayı kolaylaştırmasına izin vererek okunabilirliği artırır.
Sıra Düzeni ve Erişilebilirliği Uygulamak
Kapalı olan bir diğer önemli nokta, kontrol elemanlarının sıra düzenini ayarlamaktır. Tim, Tab tuşunu kullanarak kullanıcıların formlar arasında mantıklı bir şekilde gezinmelerini sağlamak için TabIndex özelliğini nasıl kullanacağını açıklıyor. Bu sadece kullanıcı deneyimini değil aynı zamanda klavye navigasyonuna dayanan kullanıcılar için erişilebilirliği de artırır.
Formlar Arasında Veri Aktarma
WinForms'un kapasitelerini genişleterek, Tim birden fazla form arasında veri aktarmayı anlatır. Veri değişimini kolaylaştırmak için formlarda yapılandırıcıları nasıl tanımlayacağınızı gösterir. Bu teknik, geliştiricilerin belirli verilerle yeni formları başlatmalarına olanak tanır ve uygulama tasarımında esneklik sağlar.
Sonuç
Tim Corey'nin .NET 6'da Windows Forms hakkındaki öğreticisi, C# kullanarak masaüstü uygulama geliştirmeyi öğrenmek isteyenler için değerli bir kaynaktır. Video, profesyonel Windows Forms C# uygulamaları oluşturmak için sağlam bir temel sağlayarak, temel ayar kurulumdan gelişmiş kontrol elemanları ve en iyi uygulamalara kadar geniş bir yelpazede konuları kapsar.
Daha fazla bağlam ve ek uygulamalı kodlama örnekleriyle birlikte detaylı bir rehber için Tim Corey'nin tam öğretici videosunu buradan izleyebilirsiniz.

