Visual Studio C # bir GUI uygulaması oluşturmak için kullanıyorum. Araç Kutusu, düğmeleri ve diğer öğeleri (netlik için "kontrol" demek istediğimde düğmeyi söyleyeceğim) formuma kolayca sürükleyip bırakmamı sağlayan şık bir bileşen paleti olarak hizmet eder, bu da statik formları yapmayı oldukça kolaylaştırır. Ancak, iki sorunla karşılaşıyorum:
- Düğmeleri ilk etapta oluşturmak çok iş. Statik olmayan bir formum olduğunda (yani düğmeler veya diğer denetimler, kullanıcının ne yaptığına göre çalışma zamanında oluşturulur) hiç paleti kullanamıyorum. Bunun yerine, her düğmeyi manuel olarak, yapıcıyı kullandığım yöntemle çağırarak oluşturmalı ve ardından düğme yüksekliği, genişliği, konumu, etiketi, olay işleyicisi vb. Bu son derece sıkıcı çünkü formun nasıl görüneceğini görmeden tüm bu kozmetik parametrelere bakmam gerekiyor ve ayrıca her düğme için birçok tekrarlayan kod satırı üretiyor.
- Düğmeleri bir şey yapmak da çok iş. Tam özellikli bir uygulamada etkinliklerle uğraşmak büyük bir acıdır. Bunu nasıl yapacağımı bilmemin tek yolu, bir düğme seçmek, özelliklerindeki olaylar sekmesine gitmek
OnClick
, olayıForm
'kodunda oluşturmak için olayı tıklatmak ve sonra olayın gövdesini doldurmaktır. Mantık ve sunumu ayırmak istediğimden, tüm olay işleyicilerim uygun iş mantığı işlevine tek hatlı çağrılar oluyor. Ancak bunu birçok düğme için kullanmak (örneğin, MS Word gibi bir uygulamada bulunan düğme sayısının)Form
düzinelerce kazan plakası olay işleyici yöntemiyle kodumu kirlettiğini ve bunu korumak zor.
Bunlar nedeniyle, Merhaba Dünya'dan daha karmaşık olan herhangi bir GUI programı benim için gerçekten çok pratik değildir. Açık olmak gerekirse, yazdığım programların en az kullanıcı arayüzüne sahip karmaşıklığı ile ilgili hiçbir sorunum yok - iş mantık kodumu düzgün bir şekilde yapılandırmak için OOP'yi adil bir yeterlilikle kullanabileceğimi hissediyorum. Ama GUI'yi geliştirirken sıkıştım. Çarkı yeniden icat ettiğimi hissediyorum çok sıkıcı görünüyor ve orada bir yerde GUI'yi nasıl düzgün bir şekilde yapacağımı açıklayan bir kitap var.
Bir şey mi kaçırıyorum? Yoksa tüm C # geliştiricileri tekrar eden olay işleyicilerinin ve düğme oluşturma kodunun sonsuz listelerini kabul ediyor mu?
(Umarım faydalı) bir ipucu olarak, iyi bir cevabın aşağıdakilerden bahsedeceğini umuyorum:
- Tekrarlanan düğme oluşturmayı basitleştirmek için OOP tekniklerini (fabrika modeli gibi) kullanma
- Birçok olay işleyiciyi
Sender
hangi düğmenin aradığını belirleyen tek bir yöntemle birleştirmek ve buna göre davranmak - XAML ve Windows Forms yerine WPF kullanma
Sen yok olması elbette bunlardan herhangi bahsetmek. Ne tür bir cevap aradığımla ilgili en iyi tahminim.