Bu proje, teknik bilgisi olmayan kullanıcıların görsel bir arayüz (UI) üzerinden sürükle-bırak yöntemiyle kendi formlarını, anketlerini veya veri toplama ekranlarını oluşturabilmesini sağlayan, Google Forms mantığına benzer bir Windows Forms (C#) uygulamasıdır.
- Gelişmiş Sürükle-Bırak (Drag & Drop) Tasarımcısı: Sol taraftaki araç kutusundan istenen soru tipini sürükleyip sağdaki tasarım alanına bırakarak anında form oluşturulabilir. Mavi hedef çizgisi (placeholder) ile soruların tam yerleşeceği konum önceden görüntülenir.
- Kapsamlı Soru Türleri:
- 📝 Metin Bloğu: Açıklama ve bilgi alanları (veri almaz).
- 💬 Açık Uçlu Soru: Kısa yanıt veya uzun paragraf girişleri.
- ☑️ Seçmeli Soru: Çoktan seçmeli (Radio), Onay kutusu (Checkbox) veya Açılır menü (Dropdown).
- 📊 Ölçeklendirme: Kullanıcı tanımlı min-max değerleri olan, yatayda otomatik ortalanan doğrusal ölçek (Linear Scale).
- 🧮 Seçme Tablosu: Sürükle-bırak destekli çoktan seçmeli veya onay kutulu karmaşık ızgara (Grid) soruları.
- 📅 Zaman: Tarih veya Saat seçici.
- 📎 Dosya Yükleme: Cihazdan dosya dizini seçme işlemi.
- Satır İçi (Inline) Düzenleme Deneyimi: Tasarım alanından bir soruya tıklandığında, sağ tarafta karmaşık bir özellik menüsü açılmaz. Tamamen Google Forms mimarisinde olduğu gibi, sorunun içeriğini, tipini, seçeneklerini, satır/sütun veya ölçek limitlerini doğrudan sorunun kendi kartı üzerinden anlık olarak düzenleyebilirsiniz.
- Tam Duyarlı (Responsive) "Kart" Görünümü: Eklenen sorular standart bir genişliğe hapsolmaz, uygulama penceresinin boyutuna göre otomatik genişleyip daralan şık çerçeveli kartlar (bloklar) halinde görünür.
- Veritabanı ve Dışa Aktarma:
- SQLite: Modern EAV (Entity-Attribute-Value) modeli ile birlikte, karmaşık soru matrisleri C#
System.Text.Jsonserileştirmesi kullanılarak kaydedilir ve yüklenir. - JSON & XML Dışa Aktarma: Oluşturduğunuz form şablonlarını anında JSON veya XML olarak yedekleyebilirsiniz.
- SQLite: Modern EAV (Entity-Attribute-Value) modeli ile birlikte, karmaşık soru matrisleri C#
- Önizleme ve Yanıt Görüntüleme: "Önizleme" sekmesinden formu test edip kaydedebilir, "Yanıtlar" sekmesinden daha önce doldurulmuş formların sonuçlarını inceleyebilirsiniz.
- .NET 9.0 SDK veya üzeri (Projeyi derlemek için).
- Microsoft.Data.Sqlite (Proje içerisinde NuGet bağımlılığı olarak bulunmaktadır).
- Repoyu bilgisayarınıza klonlayın veya indirin.
- Proje dizinine gidin (Terminal veya Komut Satırı üzerinden).
- Gerekli paketleri indirmek ve projeyi çalıştırmak için aşağıdaki komutları kullanın:
dotnet build
dotnet run- Visual Studio 2022 veya daha güncel bir IDE kullanıyorsanız,
dynamic-forms.csprojdosyasına çift tıklayıp doğrudan F5 tuşu ile çalıştırabilirsiniz.
- Form Başlığı: Tasarım ekranının en üstünde yer alan varsayılan Form Başlığı ve Açıklaması kartına tıklayarak form detaylarınızı girin.
- Soru Ekleme: Sol paneldeki araç kutusundan bir soru butonuna fareyle basılı tutarak orta boş alana sürükleyip bırakın (sürüklerken mavi bir çizgi size yerini gösterecektir).
- Soruyu Düzenleme: Form üzerindeki herhangi bir soruya tıklayın. Soru anında düzenleme moduna geçer:
- Soru başlığını kendi TextBox'ından düzenleyin.
- Seçmeli Sorularda doğrudan şıkların yanındaki "X" tuşu ile silme yapabilir veya alttaki butondan "Yeni Seçenek Ekle" diyebilirsiniz.
- Ölçek Sorusunda 1-5 veya 0-10 gibi aralıkları açılır menüden ayarlayabilir, iki uca özel "Etiket" metinleri ekleyebilirsiniz.
- Tablo Seçim Sorusunda sol taraftan satırları, sağ taraftan sütunları ayrı ayrı yönetebilirsiniz.
- Kaydetme: Üst menüdeki "Kaydet" butonu ile form yapınızı veritabanına kaydedin.
- JSON Dışa Aktarma: Dilerseniz tasarımınızı "JSON İndir" butonuyla bilgisayarınıza yedekleyebilirsiniz.
- Yanıtlar ve Filler:
DynamicForms.Fillermodülünü çalıştırarak oluşturduğunuz formları gerçek kullanıcı gibi doldurabilir ve yanıtları veritabanında saklayabilirsiniz.
- Dil: C# (Windows Forms)
- Veritabanı: SQLite
- Tasarım Deseni: Olay Yönelimli (Event-Driven), Kalıtım ve Polimorfizm ile Dinamik Bileşen Üretimi (Polymorphic Form Elements).
- Serileştirme:
System.Text.Json(JsonDerivedType nitelikleri kullanılarak alt sınıfların eksiksiz depolanması).
Bu proje açık kaynaklı olup, kişisel veya eğitim amaçlı geliştirme süreçleri için serbestçe kullanılabilir.