Cara memasukkan UserControl ke dalam kotak alat Visual Studio


94

Saya membuat kontrol pengguna dalam proyek saya, dan setelah membangun proyek, saya harus meletakkannya di kotak peralatan saya, dan menggunakannya sebagai kontrol umum. tapi saya tidak bisa. yang UserControlada di namespace proyek saya, dan saya mencoba Choose Itemdi menu klik kanan, tapi saya tidak menemukan cara untuk menambahkannya.

Jawaban:


116

Saya berasumsi Anda menggunakan VS2010 (itulah yang Anda tandai sebagai pertanyaan). Saya mengalami masalah untuk menambahkannya secara otomatis ke toolbox seperti pada VS2008 / 2005. Sebenarnya ada opsi untuk menghentikan pengisian otomatis kotak alat!

Buka Alat> Opsi> Perancang Formulir Windows> Umum

Di bagian bawah daftar Anda akan menemukan Toolbox> AutoToolboxPopulate yang pada penginstalan baru default ke False. Tetapkan itu benar dan kemudian buat kembali solusi Anda.

Hei presto mereka kontrol pengguna di solusi Anda harus secara otomatis ditambahkan ke kotak alat. Anda mungkin harus memuat ulang solusinya juga.


32
Kata kuncinya di sini bagi saya adalah "membangun kembali" ... belum mencobanya, d'oh! Melakukan itu sendirian menyortir ini untuk saya.
Danny Beckett

2
Dan, saya harus membuka kembali solusinya setelah membangun kembali
Jim Lahman

1
Di VS2012 mereka sekarang telah menambahkan petunjuk 'Solusi saat ini harus dibuka kembali agar ini berlaku' ke dialog opsi.
Carlos P

2
@AnatoliiGumennyi Anda harus mengikuti instruksi @ Arseny jika di UserControlluar proyek saat ini.
Menyerang

2
Catatan: Sepertinya di VS2013, pengaturan Toolbox> AutoToolboxPopulate sekarang default ke True pada pemasangan baru.
Curmudgeon

36

Klik kanan pada toolbar lalu klik "pilih item" di menu konteks. Dialog dengan komponen terdaftar akan muncul. dalam dialog ini klik "Browse" untuk memilih perakitan Anda dengan kontrol pengguna yang ingin Anda gunakan.

PS. Majelis ini harus didaftarkan sebelumnya.


17
Bisakah Anda menjelaskan 'terdaftar sebelumnya'? Saya tidak berpikir itu diperlukan.
Henk Holterman

25

Saya menemukan bahwa kontrol pengguna harus memiliki konstruktor tanpa parameter atau tidak akan muncul dalam daftar. setidaknya itu benar di vs2005.


8
Juga di vs2012.
colbybhearn

8
Juga di vs2013.
Connor McGuinness

6
Juga di vs2015?
serdar

5
Ya juga di vs2015
JRB

5
Tambahkan vs2017 ke daftar
Ryan

14

Menggunakan VS 2010:

Katakanlah Anda memiliki proyek Windows.Forms. Anda menambahkan UserControl (katakanlah MyControl) ke proyek, dan merancang semuanya. Sekarang Anda ingin menambahkannya ke kotak peralatan Anda.

Segera setelah proyek berhasil dibangun satu kali, itu akan muncul di Komponen Kerangka Anda. Klik kanan Toolbox untuk mendapatkan menu konteks, pilih "Pilih Item ...", dan telusuri nama kontrol Anda (MyControl) di bawah tab ".NET Framework Components".

Keuntungan menggunakan dll: Anda dapat mengedit kontrol dalam proyek yang sama dengan formulir Anda, dan formulir akan dibangun dengan kontrol baru. Namun, kontrol hanya akan tersedia untuk proyek ini.

Catatan: Jika kontrol memiliki kesalahan build, selesaikan sebelum melanjutkan ke formulir yang berisi, atau desainer mengalami serangan jantung.


1
Ini juga dapat tersedia untuk proyek lain jika Anda mengimpor .exe di toolbox.
Sebastian

1
Jawaban apa pun yang berisi "atau desainernya mengalami serangan jantung" mendapat suara saya!
Yoel

Saya melakukan hal yang sama dan semuanya baik-baik saja, tetapi ketika saya memindahkan kode ke proyek lain, membuat dll, dan mereferensikan file dll, kontrol khusus tidak muncul.
Fandi Susanto

6

Saya memiliki banyak kontrol pengguna tetapi satu kontrol menolak untuk ditampilkan di Toolbox , meskipun saya membangun kembali solusi dan itu dicentang di dialog Pilih Item ....

Larutan:

  1. Dari Solution Explorer I Mengklik kanan file kontrol pengguna yang melanggar dan memilih Exclude From Project
  2. Bangun kembali solusi tersebut
  3. Klik kanan kontrol pengguna dan pilih Sertakan dalam Proyek (dengan asumsi Anda memiliki Show All Files diaktifkan di Solution Explorer )

Catatan ini juga mengharuskan Anda mengaktifkan opsi AutoToolboxPopulate . Seperti yang disarankan oleh jawaban @DaveF.

Solusi Alternatif: Saya tidak yakin apakah ini berhasil, dan saya tidak dapat mencobanya karena saya sudah menyelesaikan masalah saya, tetapi jika Anda tidak mencentang kontrol pengguna dari dialog Pilih Item ... , tekan OK, lalu buka kembali dan memeriksa kontrol pengguna. Itu mungkin juga berhasil.


3

Ada beberapa cara.

  1. Dalam Proyek asli Anda, pilih File | Ekspor template
    Kemudian pilih ItemTemplate dan ikuti wizard.

  2. Pindahkan UserControl Anda ke ClassLibrary terpisah (dan perbaiki namespace dll).
    Tambahkan referensi ke perpustakaan kelas dari Proyek yang membutuhkannya. Jangan repot-repot dengan GAC atau apapun, hanya file DLL.

Saya tidak akan menyarankan untuk meletakkan UserControl di ToolBox normal, tetapi itu bisa dilakukan. Lihat jawaban dari @Arseny


Ini sepertinya pendekatan yang lebih baik. Satu-satunya kelemahan adalah Anda tidak dapat mengedit kontrol secara visual (atau setidaknya saya tidak menemukan caranya).
Sebastian

Tidak masalah, saya menambahkan template sebagai elemen dan desainernya ditampilkan.
Sebastian

Saya sangat setuju dan juga sangat menyarankan agar tidak menautkan ke DLL jika proyek yang berisi UserControl berada dalam solusi yang sama. Dan itu akan bekerja dengan DLL, yaitu UserControl di Proyek Perpustakaan akan muncul di proyek WinForms manapun yang mereferensikan perpustakaan (setelah membangun kembali, tentu saja ;-)).
Xan-Kun Clark-Davis

2

Dalam kasus saya, saya tidak dapat melihat kontrol apa pun dalam proyek tersebut. Hanya ketika mengklik kanan pada toolBox dan memilih "Show All" saya melihatnya, tetapi mereka dinonaktifkan ...

Mengubah jenis Proyek dari aplikasi Windows ke ClassLibrary membuat perbaikan.


1

Pertanyaan dasar jika Anda menggunakan obat generik di kontrol basis Anda. Jika ya:

katakanlah kita memiliki kendali:

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

MyComboDropDown tidak akan mengizinkan untuk membuka desainer di atasnya dan tidak akan ditampilkan di Toolbox. Mengapa? Karena kontrol dasar belum dikompilasi - ketika MyComboDropDown terpenuhi. Anda dapat mengubah ini:

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

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Dari pada setelah membangun kembali, dan mengatur ulang kotak alat itu harus dapat melihat MyComboDropDown di desainer dan juga di Toolbox



Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.