Birden çok "ekrana" sahip Winform uygulamaları oluşturmanın uygun yolu nedir?


11

Birden fazla 'ekranı' olan bir Winform uygulaması oluşturmanın doğru yolu nedir? Örneğin, küçük bir yedekleme programı yazmaya çalışıyorum (esas olarak kıkırdamalar için) ve formun üzerine denetimleri ve kapları döküyorum.

Farklı ekranları ayırmak için paneller ve grup kutuları kullanıyorum (örneğin: "Ayarlar" penceresinin tüm denetimlerini tutmak için bir panel ve ayarlanmış olan tüm yedeklemeleri göstermek için başka bir panel kullanıyorum ). Form.cs dosyam büyük miktarda kod haline geldi ve yanlış bir şey yaptığımı hissediyorum. Dosyada neredeyse hiç bir şey bulamıyorum ve baştan başlamaya hazırım. Bu proje benim için sadece C # ve .NET bilgimi genişletmekti, bu yüzden yeni bir proje başlatmak büyük bir anlaşma değil.

Yanıtlar:


10

Kullanıcı arayüzü karmaşıklığını kontrol etmenin birkaç yolu vardır.

  • Çok sayıda formunuz varsa geçişleri yöneten bir tasarım deseni seçebilirsiniz: Örneğin Uygulama Denetleyicisi veya metale daha yakın: Durum .
  • Kontrol gruplarını tek tek kontroller halinde oluşturabilirsiniz. Winform'larda, Kullanıcı Denetimleri'ni kullanırsınız .
  • If the complexity is coming from the quantity of code in your form, as opposed to the quantity of controls on the form, you could simply better encapsulate code into objects using standard object oriented programming techniques. Understanding the SOLID principles is a good place to start.
  • Otherwise, there are patterns for working with user interfaces. Among other things (separation of concerns being prominent), they facilitate organization of code. Some common ones are MVC, MVP, MVVM

From your description, I'd use custom user controls to replace what you're using panels for now. Then just place those user controls onto your form(s) where your panels were.


4

In Winforms each form should handle it's own job. You should have a form for settings, another to show the current backups, etc.

If you want to stick with the single-form multiple groups you can create User Controls, as SnOrfus said, to separate the code. If you still end up with a ton of code on some classes you can have Partial classes to separate different code in to different files.

Partial classes may seem a good alternative but I'm only recommending that to you because you building a hobby project. For a bigger or more complex project you should use patterns to delegate the right work to the right objects, you can also switch to a new technology like WPF where is easier to use patterns like MVVM.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.