C# İlk C# projesi nasıl olmuş?

Mephistopheles

Hectopat
Katılım
6 Kasım 2023
Mesajlar
1.087
Makaleler
8
Çözümler
13
Yer
Arsenal
Selamlar arkadaşlar, yaklaşık 3 haftadır C# öğreniyorum, YouTube’da, Udemy’de bir sürü video bitirdim. Artık öğreniyorum modundan çıkıp yapıyorum moduna geçme zamanı geldi diye düşündüm.

İlk projemi bitirdim, sizin de görüşlerinizi almak istiyorum.

Neler yaptım?
  1. Tamamen C# Windows Forms + .NET 8
  2. SQLite veritabanı (tek dosya, kurulum falan yok)
  3. Entity Framework Core (Code First + migration’lar)
  4. MaterialSkin.2 ile baya şık bir tema (karanlık mod bağımlısıyım)
  5. Arada async/await, LINQ, custom control falan da kullandım (kendimi geliştirmek için)

Çalışan özellikler:
  1. Görev ekle, sil, düzenle, tamamla işaretle.
  2. tarih, öncelik (kırmızı-sarı-yeşil), kategori
  3. Güçlü arama (başlık + açıklama anında filtreliyor)
  4. Zengin metin not defteri (renkli yazı, kalın, link, her şey var)
  5. Tek tuşla karanlık ↔ açık tema değiştirme.
  6. Veriler TaskFlow.db dosyasında, başka bilgisayara atınca direkt çalışıyor
C#:
// Görevleri async yükleme + arama (takılma sıfır)
private async Task LoadTasksAsync(string search = "")
{
    await using var ctx = new AppDbContext();
    var query = ctx.Tasks.AsQueryable();

    if (!string.IsNullOrWhiteSpace(search))
        query = query.Where(t => t.Title.Contains(search, 1) ||
                                t.Description.Contains(search));

    var tasks = await query
        .OrderBy(t => t.IsCompleted)
        .ThenByDescending(t => t.Priority)
        .ThenBy(t => t.DueDate ?? DateTime.MaxValue)
        .ToListAsync();

    flowLayoutPanel.Controls.Clear();
    foreach (var t in tasks)
        flowLayoutPanel.Controls.Add(new TaskCard(t) { Width = flowLayoutPanel.Width - 25 });
}
Kod:

C#:
// Tema değiştirme (tek satırla karanlık/açık geçiş)
private void btnTheme_Click(object sender, EventArgs e)
{
    var m = MaterialSkinManager.Instance;
    m.Theme = m.Theme == MaterialSkinManager.Themes.DARK
        ? MaterialSkinManager.Themes.LIGHT
        : MaterialSkinManager.Themes.DARK;
}

C#:
// Not defteri kaydetme (RTF formatında, format kaybolmuyor)
private void btnSaveNote_Click(object sender, EventArgs e)
{
    File.WriteAllText("notes.rtf", richTextBoxNote.Rtf);
    MessageBox.Show("Not kaydedildi kanka!", "Başarılı");
}

Eksikler sizden fikir bekliyorum:
  1. Sistem tepsisinde hatırlatma bildirimi nasıl yaparım?
  2. Veritabanını şifrelesem mi? (DPAPI falan?)
  3. Google Calendar senkronu eklesem çok mu abartı olur?
  4. Bu projeyi ileride WPF veya MAUI’ye taşısam mantıklı mı?
  5. Performans olarak 5000 görev açtım, takılmadı normal mi sizce?
 
Son düzenleyen: Moderatör:
Kaynak çok az ama WinUi3 öğrenirsen çok işine yarar.
 

Technopat Haberler

Yeni konular

Geri
Yukarı