UserControl Visual Studio toolBox'a nasıl eklenir


94

Projemde bir kullanıcı kontrolü yaptım ve projeyi oluşturduktan sonra bunu araç kutuma koymam ve ortak bir kontrol olarak kullanmam gerekiyor. ama yapamam. , UserControlproje ad alanımda ve Choose Itemsağ tıklama menüsünde denedim , ancak eklemenin bir yolunu bulamadım.

Yanıtlar:


117

VS2010 kullandığınızı varsayıyorum (soruyu bu şekilde etiketlediniz) VS2008 / 2005'teki gibi otomatik olarak araç kutusuna eklemelerini sağlamakta sorunlar yaşadım. Aslında araç kutusunun otomatik olarak doldurulmasını durdurma seçeneği var!

Araçlar> Seçenekler> Windows Form Tasarımcısı> Genel'e gidin.

Listenin altında Toolbox> AutoToolboxPopulate'i yeni bir kurulumda varsayılan olarak False olarak göreceksiniz. Doğru ayarlayın ve ardından çözümünüzü yeniden oluşturun.

Hey, çözümünüzdeki kullanıcı kontrolleri araç kutusuna otomatik olarak eklenmelidir. Çözümü de yeniden yüklemeniz gerekebilir.


32
Benim için buradaki anahtar kelime "yeniden inşa etmek" idi ... bunu denememişti, d'oh! Bunu tek başına yapmak bunu benim için çözdü.
Danny Beckett

2
Ve yeniden
inşadan

1
VS2012'de artık seçenekler iletişim kutusuna 'Bunun etkili olması için mevcut çözümün yeniden açılması gerekiyor' ipucunu eklediler.
Carlos P

2
@AnatoliiGumennyi UserControlMevcut projenin dışındaysa @ Arseny'nin talimatını takip etmeniz gerekecektir .
Attacktive

2
Not: VS2013'te olduğu gibi görünüyor, Toolbox> AutoToolboxPopulate ayarı artık yeni kurulumda varsayılan olarak True olarak ayarlanıyor.
Curmudgeon

36

Araç çubuğuna sağ tıklayın ve ardından bağlam menüsünde "öğe seç" e tıklayın. Kayıtlı bileşenlerin bulunduğu bir iletişim kutusu açılır. bu iletişim kutusunda, kullanmak istediğiniz kullanıcı kontrolüyle montajınızı seçmek için "Gözat" a tıklayın.

PS. Bu meclis daha önce tescil ettirilmelidir.


17
'Daha önce kaydedildi' ifadesini açıklayabilir misiniz? Bunun gerekli olduğunu sanmıyorum.
Henk Holterman

25

Kullanıcı kontrolünün parametresiz bir kurucuya sahip olması gerektiğini veya listede görünmeyeceğini buldum. en azından bu 2005'e karşı doğruydu.


8
Ayrıca 2012'ye karşı.
colbybhearn

8
Ayrıca 2013'e karşı.
Connor McGuinness

6
Ayrıca vs2015'te mi?
serdar

5
Evet ayrıca vs2015'te
JRB

5
Vs2017'yi listeye ekle
Ryan

14

VS 2010 kullanımı:

Diyelim ki bir Windows.Forms projeniz var. Projeye bir UserControl (örneğin MyControl) eklersiniz ve hepsini tasarlarsınız. Şimdi onu alet kutunuza eklemek istiyorsunuz.

Proje başarıyla bir kez inşa edilir edilmez Çerçeve Bileşenlerinizde görünecektir. Bağlam menüsünü almak için Araç Kutusu'na sağ tıklayın, "Öğeleri Seç ..." öğesini seçin ve ".NET Framework Bileşenleri" sekmesi altında kontrolünüzün adına (MyControl) göz atın.

Dll'leri kullanmaya göre avantaj: kontrolleri formunuzla aynı projede düzenleyebilirsiniz ve form yeni kontrollerle oluşturulacaktır. Ancak, kontrol sadece bu proje için geçerli olacaktır.

Not: Kontrolde yapı hataları varsa, bunları içeren formlara geçmeden önce bunları çözün veya tasarımcı kalp krizi geçirir.


1
.Exe dosyasını araç kutusunda içe aktarırsanız, diğer projeler için de kullanılabilir.
Sebastian

1
"Ya da tasarımcı kalp krizi geçirdi" içeren herhangi bir cevap benim oyumu alır!
Joel

Ben de aynı şeyi yaptım ve her şey yolunda, ancak kodu başka bir projeye taşıdığımda, bir dll oluşturduğumda ve dll dosyasına başvurduğumda özel kontrol görünmüyor.
Fandi Susanto

6

Birçok kullanıcı kontrolüm vardı , ancak çözümü yeniden oluşturduğum ve Öğeleri Seç ... iletişim kutusunda kontrol edilmesine rağmen Araç Kutusu'nda gösterilmeyi reddetti .

Çözüm:

  1. Gönderen Çözüm Explorer ben sağ Tıklandı kusurlu kullanıcı kontrol dosyası ve seçilen Projesi'nden hariç
  2. Çözümü yeniden oluşturun
  3. Kullanıcı denetimine sağ tıklayın ve Projeye Dahil Et'i seçin ( Çözüm Gezgini'nde Tüm Dosyaları Göster'in etkin olduğunu varsayarak )

Not Bu da var gerektirir AutoToolboxPopulate seçeneği etkin. @DaveF cevabının önerdiği gibi.

Alternatif Çözüm: Bunun işe yarayıp yaramadığından emin değilim ve sorunumu zaten çözdüğüm için deneyemedim, ancak Öğeleri Seç ... iletişim kutusundan kullanıcı kontrolünün işaretini kaldırdıysanız, Tamam'a basın ve ardından tekrar açın ve kullanıcı kontrolünü kontrol etti. Bu da işe yarayabilir.


3

Birkaç yol var.

  1. Orijinal Projenizde, Dosya | Şablonu dışa aktar'ı
    seçin. Ardından ItemTemplate'i seçin ve sihirbazı izleyin.

  2. UserControl'unuzu ayrı bir ClassLibrary'ye taşıyın (ve ad alanlarını vb. Düzeltin).
    Sınıf kitaplığına ihtiyaç duyan Projelerden bir ref ekleyin. GAC veya başka bir şeyle uğraşmayın, sadece DLL dosyası.

Normal ToolBox'a bir UserControl koymanızı tavsiye etmem, ancak yapılabilir. @ Arseny'den gelen yanıtı görün


Bu daha iyi bir yaklaşım gibi görünüyor. Tek dezavantajı, kontrolü görsel olarak düzenleyememenizdir (veya en azından nasıl olduğunu bulamadım).
Sebastian

Boşver, şablonu öğe olarak ekledim ve tasarımcı gösteriyor.
Sebastian

UserControl'ü içeren proje aynı çözümdeyse, bir DLL'ye bağlanmamayı kesinlikle kabul ediyorum ve şiddetle tavsiye ediyorum. Ve bir DLL ile çalışacaktır, yani Kütüphane Projesindeki UserControl, kütüphaneye referans veren herhangi bir WinForms projesinde görünecektir (elbette bir yeniden kurulumdan sonra ;-)).
Xan-Kun Clark-Davis

2

Benim durumumda, projedeki kontrollerin hiçbirini göremedim. Yalnızca toolBox'a sağ tıklayıp "Tümünü Göster" seçeneğini belirlediğimde onları gördüm, ancak yine de devre dışı bırakıldılar ...

Windows uygulamasından Proje türünün ClassLibrary olarak değiştirilmesi düzeltmeyi yaptı.


1

Temel kontrolünüzde jenerik kullanıyorsanız temel soru. Eğer evetse:

diyelim ki kontrol bizde:

public class MyComboDropDown : ComboDropDownComon<MyType>
{
    public MyComboDropDown() { }
}

MyComboDropDown, tasarımcının üzerinde açılmasına izin vermeyecek ve Toolbox'ta gösterilmeyecektir. Neden? MyComboDropDown uygulandığında temel kontrol zaten derlenmediğinden. Bunu değiştirebilirsiniz:

public class MyComboDropDown : MyComboDropDownBase
{
    public MyComboDropDown() { }
}

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Araç kutusunu yeniden oluşturduktan ve sıfırladıktan sonra, MyComboDropDown'u tasarımcıda ve ayrıca Toolbox'ta görebilmelidir.



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.