How to put a UserControl into Visual Studio toolBox
Asked Answered
I

11

103

I made a usercontrol in my project, and after building project, I need to put it in my toolbox, and use it as a common control. but i can't. the UserControl is in my project namespace, and I tried Choose Item in right click menu, but I didn't find a way to add it.

Implicit answered 10/8, 2010 at 6:2 Comment(0)
I
131

I had problems getting them to add automatically to the toolbox as in VS2008/2005.

There's actually an option to stop the toolbox auto-populating!

Go to Tools > Options > Windows Forms Designer > General

At the bottom of the list, you'll find Toolbox > AutoToolboxPopulate which on a fresh install defaults to False. Set it true and then rebuild your solution.

Hey presto, the user controls in your solution should be automatically added to the toolbox.

You might have to reload the solution as well.

Idaliaidalina answered 17/11, 2011 at 19:28 Comment(10)
The key word here for me was "rebuild"... hadn't tried that, d'oh! Doing that alone sorted this for me.Canaille
And, I had to re-open the solution after the rebuildHepza
In VS2012 they have now added the hint 'The current solution must be re-opened for this to take effect' to the options dialog.Luminescence
It is does not work in Visual 2013 Studio for me :( My custom control from dll not showing in the toolboxMiscellanea
@AnatoliiGumennyi You will have to follow @Arseny's instruction if the UserControl is outside the current project.Finback
Note: Looks like in VS2013, the Toolbox > AutoToolboxPopulate setting now defaults to True on fresh install.Prewar
AutoToolboxPopulate + reopen solution = What a live saver :-)Lev
I am not sure what is meant by "select your assembly". I browse to the solution and end up selecting the exe file in the Debug folder. I get a message saying "The following controls were successfully added to the toolbox but are not enabled in the active designer. It shows my 2 UserContols in my solution in the list. Click OK The UserControls do not appear under Toolbox > General (VS 2015)Distemper
I renew the SO password just to upvote this answer.Dayan
The setting was 'false' in VS2017.Suzettesuzi
S
38

Right-click on toolbar then click on "choose item" in context menu. A dialog with registered components pops up. in this dialog click "Browse" to select your assembly with the usercontrol you want to use.

PS. This assembly should be registered before.

Shuffle answered 10/8, 2010 at 7:3 Comment(2)
Can you explain 'registered before' ? I don't think that's required.Epilogue
He probably means that you have to put your usercontrols on a separated DLL and then add that DLL to the toolbox after building it.Fledgling
A
30

I found that the user control must have a parameterless constructor or it won't show up in the list. at least that was true in vs2005.

Alphard answered 23/12, 2010 at 20:5 Comment(5)
Also in vs2015?Gracious
Yes also in vs2015Helvetii
Add vs2017 to the listDorsman
It might "always" hold true if this is based on making an instance of the custom control, like how .NET serialization works. It can't do that if there is no parameterless constructor.Caracara
Thank you! I spent half an hour tyring to get my control added to the toolbox and this was the answerZapata
O
15

Using VS 2010:

Let's say you have a Windows.Forms project. You add a UserControl (say MyControl) to the project, and design it all up. Now you want to add it to your toolbox.

As soon as the project is successfully built once, it will appear in your Framework Components. Right click the Toolbox to get the context menu, select "Choose Items...", and browse to the name of your control (MyControl) under the ".NET Framework Components" tab.

Advantage over using dlls: you can edit the controls in the same project as your form, and the form will build with the new controls. However, the control will only be avilable to this project.

Note: If the control has build errors, resolve them before moving on to the containing forms, or the designer has a heart attack.

Orientalize answered 23/12, 2010 at 19:56 Comment(3)
It could be also available to other projects if you import the .exe in the toolbox.Fiscus
Any answer containing "or the designer has a heart attack" gets my vote!Urinal
I did the same thing and it's all good, but when i moved the code into another project, create a dll, and reference the dll file, the custom control does not show up.Watchcase
B
7

I had many users controls but one refused to show in the Toolbox, even though I rebuilt the solution and it was checked in the Choose Items... dialog.

Solution:

  1. From Solution Explorer I Right-Clicked the offending user control file and selected Exclude From Project
  2. Rebuild the solution
  3. Right-Click the user control and select Include in Project (assuming you have the Show All Files enabled in the Solution Explorer)

Note this also requires you have the AutoToolboxPopulate option enabled. As @DaveF answer suggests.

Alternate Solution: I'm not sure if this works, and I couldn't try it since I already resolved my issue, but if you unchecked the user control from the Choose Items... dialog, hit OK, then opened it back up and checked the user control. That might also work.

Bluejacket answered 18/7, 2013 at 23:22 Comment(0)
E
3

There are a couple of ways.

  1. In your original Project, choose File|Export template
    Then select ItemTemplate and follow the wizard.

  2. Move your UserControl to a separate ClassLibrary (and fix namespaces etc).
    Add a ref to the classlibrary from Projects that need it. Don't bother with the GAC or anything, just the DLL file.

I would not advice putting a UserControl in the normal ToolBox, but it can be done. See the answer from @Arseny

Epilogue answered 10/8, 2010 at 8:3 Comment(3)
This seems the better approach. The only drawback is that you can't edit the control visually (or at least I didn't find how).Fiscus
Nevermind, I added the template as element and the designer is showing.Fiscus
I totally agree and would also strongly advise against linking to a DLL if the project that contains the UserControl is in the same solution. And it will work with a DLL, i.e. The UserControl in the Library Project will show up in any WinForms project that reference the library (after a rebuild, of course ;-) ).Lev
W
2

In my case, I couldn't see any of the controls in the project. Only when right clicking on toolBox and selecting "Show All" I saw them, but yet they were disabled...

Changing Project type from Windows application to ClassLibrary made the fix.

Woolly answered 14/3, 2017 at 8:14 Comment(0)
P
1

Basic qustion if you are using generics in your base control. If yes:

lets say we have control:

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

MyComboDropDown will not allow to open designer on it and will be not shown in Toolbox. Why? Because base control is not already compiled - when MyComboDropDown is complied. You can modify to this:

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

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Than after rebuild, and reset toolbox it should be able to see MyComboDropDown in designer and also in Toolbox

Pyaemia answered 5/8, 2015 at 9:19 Comment(0)
G
0

The issue with my designer was 32 vs 64 bit issue. I could add the control to tool box after following the instructions in Cannot add Controls from 64-bit Assemblies to the Toolbox or Use in Designers Within the Visual Studio IDE MS KB article.

Gemination answered 21/7, 2014 at 18:41 Comment(0)
B
0

Recompiling did the trick for me!

Blockus answered 9/9, 2014 at 13:21 Comment(0)
A
0

I just had this issue with VS 2022. There may be a quick/easy answer.

My quick and dirty user control would not appear in the toolbox (full rebuild etc.).

I quit the solutiuon and VS, reloaded all, rebuilt and it appeared and worked.

Annabellannabella answered 10/11, 2021 at 10:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.