Kullanıcı Kontrolü, Özel Kontrol ve Bileşen arasındaki fark nedir?


82

Bunlar bir projeye ekleyebileceğiniz üç farklı şey ve farkı anlayıp anlamadığımdan pek emin değilim. Örneğin, hepsi bir Form. Her biri için bazı yaygın kullanım senaryoları nelerdir? Fark ne?

Yanıtlar:


163

Kullanıcı Kontrolü, Özel Kontrol ve Bileşen arasındaki temel fark, miras ağacındaki farklı seviyelerden miras almalarıdır:

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

MyUserControl
   |-> ContainerControl
          |-> ScrollableControl
                 |-> Control
                        |-> Component

Kısacası, farklı seçeneklerle farklı miktarda önceden kablolu işlevsellik elde edersiniz.

Farklı seçenekleri ne zaman kullanırsınız? (bunlar düşünceler ve görüşlerdir, gerçekler değil)

  • UI olmadan işlevsellik sağlamak istiyorsanız bir bileşen oluşturun (örneğin Zamanlayıcı bileşenleri, veri kaynakları, ...)
  • Görsel görünümü üzerinde tam kontrole sahip olduğunuz bir bileşen yapmak istiyorsanız ve gereksiz işlevsellik yükü istemiyorsanız, özel bir kontrol oluşturun . Tipik durumlar, sınırlı işlevselliğe sahip basit kontrollerdir (düğme gibi)
  • Bir oluşturma kullanıcı kontrolünü gidiyorsun eğer mevcut kontrolleri birleştirmek (Eğer listeleri arasında öğe taşıyabilirsiniz nereye düğmeleri ile gibi iki listeleri) yeniden kullanılabilir yapı taşları içine.

16
Evet, anlamam biraz zaman aldı, ama görünüşe göre a UserControlgerçekten "bileşik" bir kontrol (diğer kontrollerden yapılmış bir kontrol), oysa özel bir kontrol gerçekten kullanıcı tarafından tasarlanmış bir kontrol.
Dave Cousineau

Aralarında özel ve dinamik olarak çizilmiş grafikler bulunan birkaç Metin Kutusundan oluşan bir kontrol oluşturmak istiyorsanız, seçmeli UserControlmiyim?
Nick Alexeev

@NickAlexeev Winforms dünyasında birkaç yıldır pek çalışmadım, ama bunun doğru olacağına inanıyorum, evet.
Fredrik Mörk

2
@ FredrikMörk Güzel cevap! Özel kontrollerin nasıl oluşturulacağını öğrenebileceğimiz bir site önerebilir misiniz?
John Odom

1
Youtube'daki @John Odom AngelSix serisi, gidilecek olanıdır. Kontrol ettim ve videonun 9'da olduğunu biliyorum ve kesin olmak gerekirse 26
00'da

2

Fredrik'in söylediğine ek olarak, bunları projeler genelinde yeniden kullanmayı planladığınızda genellikle bileşenler ve özel kontroller kullanılacaktır. Sadece bir projede kullanacağınız zaman kullanıcı kontrollerini kullanın.


10
Neden öyle? Kullanıcı kontrolünü tek bir projede kullanmanın bir faydası, birkaç projede kullanılmasının bir sınırlaması ...?
Camilo Martin

1

Son ifadenin bence doğru olmadığına inanıyorum. Birçok farklı nedenden dolayı kullanıcı kontrolleri oluşturuyorum.

Bunun ana nedeni, eğer diyelim ki, birlikte gruplanmış birden fazla kontrol arayüzünü tasarlıyorum.

Önce bir sınıf kitaplığı oluşturuyorum, sonra ona kullanıcı denetimleri ekliyorum. Şimdi, kullanıcı kontrolünün çalışma şeklinin arkasındaki mantığın herhangi bir bölümünü değiştirmem gerekirse, çok kolay bir şekilde yapabilirim. Ayrıca bu sınıf kitaplığı birden çok kez kullanılabilir.

Ayrıca aynı klas kitaplık içinde, herhangi bir kullanıcı kontrolüm için paylaşılabilen ve kullanılabilen birden fazla sınıfa sahip olabilirim.

Kullanıcı kontrollerini kullanmamın ana nedeni budur. Ve kullanıcı kontrolünüzde veya sınıf kitaplığınızda bir değişiklik yaparsanız. işi oluşturduğunuzda. dll dinamik olarak bin klasöründe güncellenir.

Dolayısıyla, bunu başka bir projede referans veriyorsam, Bu değişiklikler yeni projede de görünecek.

Ayrıca, formla ve forma yüklediğiniz herhangi bir şeyle aynı boyama rutinlerini kullanmaz.

Dolayısıyla kullanıcı kontrolleri bize çok modüler olma yeteneği verir Ve sınıf kitaplığının temel sınıflarını paylaşan birden fazla kullanıcı kontrolüne sahip olabilirim ... Yani bir kullanıcı kontrol amacı tek bir proje için değildir. Bu açıdan herhangi bir sınırlaması yoktur. Jeff


Re "Geçen deyimi bence doğru olmadığını düşünüyorum" - son açıklama ne ? [Ve en iyisi cevabınızdaki ifadeyi alıntılamaktır, böylece okuyucular ne kastettiğinizi hemen bilirler.]
ToolmakerSteve

-5

Aralarındaki temel fark - Kullanıcı Kontrolü, yalnızca tek bir uygulama veya proje içinde kullanılabilen .ascx uzantılı bir sayfa dosyasıdır. Ancak özel kontroller, birden çok uygulamada kullanılabilen derlemelerdir (dll dosyaları).


7
Soru ASP.NET ile değil, WinForms ile ilgiliydi.
Qwertie
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.