Altbilgi içeriğine atla
Iron Academy Logo
C# Uygulaması
C# Uygulaması

Diğer Kategoriler

C# Form Verisini Dosyaya Kaydetmek: Tim Corey ile Derinlemesine Bir İnceleme

Tim Corey
1h 19m 10s

C Form Verilerini Dosyaya Kaydet: Tim Corey ile Derinlemesine Bir İnceleme (Ders 23)

Kullanıcı tarafından girilen verileri güvenilir bir şekilde saklamak bir masaüstü uygulamasının en önemli sorumluluklarından biridir. Dosya kaydetme işlevselliğini uygulamak için Windows üzerinde Visual Studio'da bir Windows Form uygulaması oluşturabilirsiniz. "C# App Başlangıçtan Bitişe" serisinin 23. dersinde, Tim Corey bir WinForms uygulamasının bir formda girilen verileri nasıl aldığını, doğruladığını, bellekteki modelleri güncellediğini ve nihayetinde veritabanına veya bir metin dosyasına nasıl kaydettiğini adım adım inceler.

Bu makalede, C# form verilerini dosyaya kaydetme işlemini Tim'in videosunu adım adım açıklayarak daha derinlemesine inceleyeceğiz. Visual Studio'da yeni bir projeye nasıl başlanacağını, metin kutuları gibi kontrollerle Windows Form tasarımını ve kullanıcıların filtreler kullanarak bir yol ve dosya türü (örneğin, csv, jpeg) seçmesine izin vermek için SaveFileDialog gibi bileşenleri nasıl kullanacağınızı ele alacağız. Amacımız, Tim'in bu derste nasıl ve neden şeyleri bir araya getirdiğini anlamak, böylece okuyucuların net bir şekilde takip edebilmesini sağlamak.

Turnuva Görüntüleyiciyi Gözden Geçirme ve Bugünkü Hedef

0:01'de Tim, izleyicilere 23. Derse hoş geldiniz der ve bugünün odak noktasının Turnuva Görüntüleyici formunu tamamlamak olduğunu açıklar. Çoğu UI'nin zaten bağlandığını hatırlatır:

  • raund onay kutusu

  • eşleşme liste kutusu

  • takım adı etiketleri

  • skor metin kutuları

Skor metin kutuları için Multiline özelliği gibi özellikleri ayarlayarak kullanıcıların gerekirse daha fazla veri girmesine izin verebilirsiniz.

Tim bugün iki kalan parçayı bağlayacağını açıklar:

  1. 'Sadece Oynanmamış' onay kutusu

  2. Skor düğmesi, sonuçları depolamaya kaydetmeyi içerir

Skor düğmesini ekledikten sonra, form üzerinde sağ tıklayarak ve Visual Studio'da 'Kod Görüntüle' seçeneğini seçerek, olay işleyicilerini bağlayabilirsiniz.

Skor düğmesi çalıştığında, uygulamanın verileri ya bir veritabanına ya da bir metin dosyasına kaydedeceğini, bu da ana konumuzu gündeme getirdiğini açıkça belirtir.

'Sadece Oynanmamış' Onay Kutusu ile Eşleşmeleri Filtreleme

1:02'de Tim, onay kutusu için Özellikler penceresini açar ve CheckedChanged olayına çift tıklar. Onay kutusu durum değiştirdiğinde, eşleşme listesinin yeniden yüklenmesi gerektiğini açıklar.

Tim, mantığın zaten LoadMatchups adlı bir yöntemde bulunduğunu ve bu nedenle hiçbir şeyi yeniden icat etmek yerine, onay kutusu olayından tekrar o yöntemi çağırdığını belirtir.

1:57 civarında Tim, LoadMatchups'ı koşullu mantık eklemek için değiştirir. Bir eşleşmenin Kazananı'nın null olup olmadığını kontrol eden bir if ifadesi ekleyerek ilerler. Eğer öyleyse, bu eşleşme henüz oynanmış değil demektir.

3:10'da Tim, onay kutusunu çalışır hale getiren OR koşulunu tanıtır. Mantığı açık bir dille açıklıyor:

  • Bir eşleşmenin kazananı yoksa, göster

  • YA DA, onay kutusu işaretlenmemişse, her şeyi göster

Tim, doğruluk tablolarını sözlü olarak dikkatlice inceler ve nedenini açıklar:

  • işaretli + tamamlanmış = gizli

  • işaretlenmemiş = her zaman görünür

Koşullar karmaşık hale geldiğinde, bu mantığın kağıda dökülmesini bile önerir.

Skor Düğmesini Bağlama ve Form Değerlerini Okuma

5:45'te Tim, Skor düğmesi olayına çift tıklar. Bu düğmeye tıklamanın yapması gerekenleri açıklar:

  1. Formdan değerleri okuma (girdi genellikle bir dize olarak işlenir, bu işlemden geçirilir ve çıktı dosyaya kaydedilir)

  2. Alttaki eşleşme nesnesini güncelleme (bu mantık bir sınıfta kapsüllenmiştir)

  3. Bir kazanan belirleme

6:26'da Tim, liste kutusundan seçilen eşleşmeyi alır ve hangi takımların "Birinci Takım" ve "İkinci Takım" olduğunu belirleyen bu nesneyi açıklar.

Ardından eşleşme girişlerini döngüden nasıl geçileceğini gösterir ve metin alanlarını ayarlamak yerine, artık metin değerlerini alıp skor özelliklerine kaydetme amacının olduğunu açıklar. Aşağıdaki kod, verileri bir dosyaya nasıl yazacağınızı gösterir.

7:45'te Tim, metin girdisini double dönüştürür ve hemen geçersiz kullanıcı girişi konusunda uyarır. Kullanıcı tarafından girilen verilerin her zaman doğrulanması gerektiğini vurgular.

TryParse ile Girdiyi Doğrulama

8:39'da Tim, puanlama çözümlemesini daha güvenli bir yaklaşıma double.TryParse kullanarak yeniden düzenler. Kullanıcının sayı yerine metin türünden geçersiz bir şey yazarsa, uygulamanın çökmesini önlediğini açıklar.

10:20'de Tim, çözümleme mantığını bir if ifadesine sarar:

  • Çözümleme başarılı olursa, devam et

  • Başarısız olursa, bir mesaj kutusu göster ve geri dön

Return kullanmanın yöntemi hemen sonlandırdığını, kötü verilerin sisteme daha fazla yayılmasını önlediğini açıklar.

Bu desen Birinci Takım ve İkinci Takım skorları için tekrarlanır.

Kazananı Belirleme ve Kenar Durumlarını Yönetme

14:25'te Tim, kazananı belirlemek için iki skoru karşılaştırır. Birinci Takımın skoru daha yüksekse, o takım eşleşmenin kazananı olarak atanır.

16:41'de Tim, puanlama kurallarını tartışır ve uygulamasının yüksek skorlu kazanımlar varsaydığını açıklar. Birisi düşük skorlu kazanımlar (örneğin golf gibi) desteklemek isterse, bu mantığın tersine çevrilebileceğini veya yapılandırılabilir hale getirilebileceğini belirtir.

17:42'de Tim, berabere durumlarını açıkça ele alır. Sessizce bir kazanan seçmek yerine, berabere desteklenmediğini belirten bir mesaj gösterir ve kasti olarak bir kazanan kaydetmekten kaçınır.

Hataları Düzeltme ve UI Görünürlük Yönetimi

20:14'te Tim, hiç oynanmamış eşleşme kalmadığında bir hata ile karşılaşır. Boş bir listede .First() çağrısının bir istisnaya neden olduğunu ve önce liste sayısını kontrol ederek bunu düzelttiğini açıklar.

23:05'ten itibaren Tim, hata ayıklama felsefesini açıklar. Hataların kâğıda yazılmasını şiddetle önerir, böylece dijital dikkat dağınıklıklarından kaçınılabilir ve odaklanma korunabilir.

24:49'da Tim, yeni bir yöntem olan DisplayMatchupInfo'yu tanıtır. Etiketler, metin kutuları ve Skor düğmesi gibi UI öğelerinin sadece bir eşleşme seçildiğinde görünür olması gerektiğini açıklar.

28:28'e kadar, tüm ilgili kontroller otomatik olarak geçerli bir seçim olup olmadığına göre görünürlüğü değiştirir.

Puanlamadan Sonra Listeyi Yenileme

29:57'de Tim, Skor tıklandıktan sonra eşleşme listesinin hemen yenilenmesi gerektiğini açıklar. Aynı basitçe Skor düğmesi mantığının sonunda LoadMatchups() yine çağırır.

Bir eşleşme puanlandığında, 'Sadece Oynanmamış' işaretlendiğinde listeden kaybolduğunu gösterir.

Eşleşme Verilerini Veritabanına Kaydetme

31:16'da Tim, veri kaydetmeye geçer. Veri erişim arayüzünde UpdateMatchup adlı yeni bir yöntem tanıtır.

33:14'te Tim, bu yöntemin neden void döndürdüğünü açıklar. Nesnelerin referansla geçtiğini, onları güncellemenin orijinal veriyi güncellediğini vurgular.

Sonra saklı yordamlar oluşturur:

  • Eşleşme kazananını güncellemek için biri

  • Eşleşme girişlerini ve skorlarını güncellemek için biri

Tim, 38:08'de SQL güncellemelerinde WHERE yan tümcelerinin eksikliğine karşı şiddetle uyarır ve nasıl tek bir hatanın tüm kayıtları üzerine yazabileceğini açıklar.

49:58'de, GlobalConfig.Connection.UpdateMatchup(m) çağırarak resmi olarak verileri kalıcı saklamaya kaydeder.

Eşleşmeleri ve Kaydetmeyi Metin Dosyasına Güncelleme

52:32'de Tim, metin dosyası bağlayıcısına geçer. Kodun çoğunun zaten mevcut olduğunu ve uyarlanabileceğini açıklar.

Bir metin dosyasına kaydetmeden sonra, C'deki tüm dosya işlemlerininkitaplığını içermesi ve bir FILE işareti kullanılması gerektiğini belirtmek önemlidir. C'de veri kaydetme üç aşamalı bir süreci izler: dosyayı açma (doğru yol ve dosya adı ile), veriyi yazma (metin dosyaları için fprintf() veya ikili dosyalar için fwrite() kullanarak) ve tüm çıktının düzgün bir şekilde kaydedildiğinden emin olmak için fclose() ile dosyayı kapatma. Örneğin, bir metin kutusunu doldurabilir ve içeriğini belirli bir yola bir metin dosyasına kaydedebilirsiniz. Çıktı, belirtilen dosyaya yazılacaktır.

.NET'te SaveFileDialog bileşeni kullanılırken, kullanıcılar dosya sistemine göz atabilir ve kaydedilecek dosyaları seçebilir. Diyalog kutusu kullanıcının seçtiği yol ve dosya adını döndürür ve Dosya seçtikten sonra, dosyaları diske yazmak için gerekli olan kodu yazmalısınız. SaveFileDialog'un OpenFile yöntemi, yazabileceğiniz bir Akış nesnesi verir ve böylece çıktıyı seçilen dosyaya kaydetmenize izin verir.

53:49'da Tim, şu temel felsefeyi paylaşır:

"Uygulamanızın çalışması harika kod yazmaktan daha önemlidir."

Mevcut kaydetme mantığını kopyalar ve UpdateMatchupToFile içine uyarlar. Yeni kayıtlar eklemek yerine, eski eşleşmeyi kaldırır ve güncellenmiş olanla değiştirilir.

59:27'de Tim, eşleşme girişleri için aynı deseni tekrarlayarak, skorların ve takım atamalarının dosyada doğru bir şekilde güncellendiğini sağlamak.

1:02:44'te Tim, uygulamayı yeniden başlatmayı gösterir ve verilerin kalıcı olduğunu doğrular, form verilerinin başarılı bir şekilde dosyaya kaydedildiğini kanıtlar.

.NET WinForms uygulamalarında CSV dosyalarını işlemek için, SheetView sınıfının LoadTextFile yöntemini kullanarak CSV dosyalarını içe aktarabilir, SaveTextFile yöntemini kullanarak CSV dosyalarını dışa aktarabilir ve FpSpread sınıfının SaveExcel yöntemlerini kullanarak CSV dosyalarını Excel XLSX formatına dönüştürebilirsiniz. Spread.NET bileşeni, uygulamanız içinde CSV dosyalarını yönetmeyi kolaylaştıran güçlü bir CSV dosyası işleme işlevselliği sağlar. Örnek bir proje ve adım adım kılavuz için bu bloga bakın veya bu işlevselliği gösteren örnek uygulamayı indirin.

Tim Corey'den Son Düşünceler

Son dakikalarda Tim, veri kaydetmenin sadece sürecin bir parçası olduğunu açıklar. Bir eşleşme tamamlandıktan sonra, kazanan takımın bir sonraki tura geçmesi gerekir, ki bunu kablolamaya başlar.

Bu dersi dikkatli validasyon, kademeli ilerleme ve ilk olarak çalışan yazılıma odaklanmak, daha sonra yeniden düzenlemeye vurgu yaparak sonlandırır. Bu makalenin sizin için yararlı olmasını umuyoruz ve sağlanan çözümün kendi projelerinizde c form verilerini dosyaya kaydetmenize yardımcı olacağını umuyoruz.

Özet

Bu derste Tim Corey, adım adım C# WinForms form verilerinin UI'den doğrulama yoluyla model güncellemelerine ve ardından dosya saklamaya kadar nasıl aktığını gösterir. Bu makale, form verilerini dosyaya kaydetmek için bir örnek ve örnek bir iş akışı sağlar. Kodlar yazıldıktan sonra, işlevselliği test etmek için Visual Studio'da F5 tuşuna basarak projeyi çalıştırabilirsiniz. Onun yaklaşımını izleyerek geliştiriciler, gerçek uygulamaların kullanıcı girişlerini güvenilir bir şekilde nasıl kaydedebileceğini, veri kaybı veya çökmeler olmadan net bir şekilde görebilir.

Bu ders, Tim'in öğrettiği şekilde form verilerini doğru bir şekilde kaydetmek için pratik bir plandır.

Hero Worlddot related to C# Form Verisini Dosyaya Kaydetmek: Tim Corey ile Derinlemesine Bir İnceleme
Hero Affiliate related to C# Form Verisini Dosyaya Kaydetmek: Tim Corey ile Derinlemesine Bir İnceleme

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara