Failed to load toolbox item. It will be removed fr

2020-05-30 09:33发布

问题:

I have a WinForm application. I also have created my own User Control for it. Everything worked fine. Until today that I received the error message when I try to add it back to my program (I never removed it. Visual Studio did).

Failed to load toolbox item #UserControlName. It will be removed from the toolbox.

I have it in my solution explorer but it vanishes from my toolbox after this error. I also receive the warning that says:

'#UserControlName' is never assigned to, and will always have its default value null.

And when I look at my designer code, that is true. But I haven't done anything with my designer code. My user control is defined there but not instantiated. How can I put it back?

Does it have anything to do with the fact that I changed my build platform from x32 to x64? If that is the case I will be surprised because the program was working fine after that change.

回答1:

At times like these, you'll be forced to tinker with the designer code. As long as you don't make drastic changes in the designer code, you shouldn't break anything. To play it safe, re-instantiate the object where the other controls are instantiated (near the top of the page). The designer should fill in the blanks for properties and such.

This should also return the control to the toolbox.



回答2:

I was suffering from the same issue for one of our applications and could not find a solution. So I created the user and custom controls manually. After searching the web again I finally found why the designer is failing for this particular project. The answer is that project is 64 bit and Visual Studio is still does not have a 64 bit version, it is still 32 bit. So the designer could not load the controls in 64 bit applications or in class libraries. Read Microsoft's article about this. There was an article on Visual Studio web site but it was removed. See the the answer in Visual Studio support forum.

https://social.msdn.microsoft.com/Forums/vstudio/en-US/77e10b58-43cc-4aab-919f-888f14f99571/x64-class-library-of-user-controls?forum=csharpgeneral



回答3:

I had the same issue lately. As this (nor any other answer on this site and on the internet) actually helped me, I found out the way to fix it.
Just clean the files and rebuild the solution. As simple as that.



回答4:

You don't have to necessarily insert the user-control manually. I had the same situation an there was a reason for it.
In my case, it failed because the EXE assembly was compiled to 'mixed-mode' by using CLR support type /clr. After changing it to 'managed-only' by setting type /clr:pure, it worked.
For details, see my answer here at SO.



回答5:

After many hours of head scratching with this problem with a large custom control with few changes from a previous working copy in source control I copied all the code into a new control name and file and it all worked.

This was to identify the problem line(s) of code since the debugger would not co-operate. The copied control (along with heaps of support code and modules) worked okay.

So these are the very simple steps that fixed my original code

  1. In solution explorer rename the file (I just added an s at the end)
  2. Rebuild
  3. Test the control can now be added to a plain form
  4. Rename the control back to its original name

Step 4 might be optional for you but if you have source control and it's a in a library you would want to do this.

This brought the control back onto all my forms that weren't working (so far as I can tell). It seems the problem is in VS that somehow remembers it doesn't like it?

Hope this helps and I hope I find this message next time I get this when I have forgotten the fix :)

P.S. Clean, rebuild and/or re-run the solution is the old stand by for this problem but this time it was just one custom control in a whole (DLL) class of them. Hope this helps.



回答6:

Change to AnyCPU and rebuild the project. Visual Studio has problems with controls being 64bit.



回答7:

Check in your form.designer file if there is a left-behind property with that type. It happened to me several times. After I removed that line and rebuilt the project, everything started working.



回答8:

For me, after adding the userControl, I rebuild the application first then refreshed the items on the tool box by going to projects => Refresh project toolbox items



回答9:

In my case it helped to manually include the header files of the created user controls at the top of the Form where these controls are to be used.



回答10:

I was having same issue but I find the solution:
Click on "Project_Name" with left mouse and click "Build" then you can add the UserControl to your WinForm.