我在 ProjectA 中创建了一些用户控件。我有一个 ProjectB,它有一个窗口窗体,我想把控件放在上面。这两个项目都在一个解决方案中。有一个来自 ProjectB 的对 ProjectA 的引用,因此它可以“看到”UserControls。
但是,UserControls 并没有出现在工具箱中,以便我拖动到窗口窗体。
我已经尝试重建。我还删除了“ bin”目录以强制重建-all。
如何让 VS2008用我的 UserControls 填充工具箱?
通常你需要构建解决方案,这对我来说几乎总是管用的。
检查这个设置:
工具 > 选项 > Windows 窗体设计器 > 常规: AutoToolboxPopular
它应该被设置为 True,这样才能正常工作。
还要仔细检查用户控件是否具有有效的命名空间。
我刚刚发现没有名称空间的控件没有放在 ToolBox 中。
我通常做的是创建一个新的选项卡并将 exe/dll 添加到该选项卡... 由于加载时间和一般的麻烦,这个解决方案不太适合。
一个朋友告诉了我一个加快速度的方法。不必在工具箱中点击“选择项目...”等,对于每个新的控件,您可以创建一个名为 MyCustomControls的文件,在那里您可以创建您的自定义控件。
MyCustomControls
现在你只需要做“选择项目...”并添加这个文件一次。如果您稍后决定添加新控件,请在 MyCustomControls中创建该控件,然后重新生成。 然后您的工具箱将拥有新的控件。(如果你有 AutoToolboxPopulate,它会自动显示,如果你有一个常规编译,我认为)
AutoToolboxPopulate
这是不幸的,因为通常您希望将类分隔为“每个文件一个类”。仅仅因为 VS 不想按照您的方式来做,您就不得不破坏您的代码体系结构,这是非常可怕的。:)
我对这个解决方案也不太满意,但是如果您需要快速完成某些操作,并且您不关心文件中的多个用户控件或者只是懒惰,那么这个解决方案可能非常适合您。:)
生成项目以确保它已编译。
对于希望用户控制的窗体,打开工具箱,右键单击并选择“选择项”
浏览到在步骤1中编译的.exe 或 dll。
确保您的用户控件旁边有一个勾,按 OK。
您的用户控件应该出现在工具箱中,因此将其拖动到窗体上。
这是改编自 Calanus 对类似问题的回答。
在我的示例中,已经设置了 AutoToolboxPopular (VisualC # 2010Express)。
但是,我必须从工具箱的属性(右键单击)激活“ Show All”才能真正看到我的新用户控件。
到目前为止,我没有问题的用户控件没有显示在工具箱中。建立这个项目,它就会出现。那今天就不行了。经过一番搜寻,我继续跟进,但仍然没有找到乐趣。
因此,在花了几个小时试图让它工作却没有成功之后,我创建了一个接受默认名称的新 WPF 窗口项目,并添加了一个用户控件。 构建项目并显示用户控件,一如既往。
然后我想我的项目或 wpf 窗口文件可能出了问题。 删除了项目,创建了一个新项目,并添加了一个新控件。 建立了这个项目,但它没有工作。
我做的唯一不同的事情是为项目选择了一个名称,我在名称“ WPF 应用程序”中包含了一个空格。
再次删除该项目并再次创建一个称为“ WPFApplication”的新项目,但没有空格,并添加了一个用户控件。构建了它,用户控件出现了。
如果希望用户控件在生成时自动显示在工具箱中,请不要在项目名称中使用空格。希望这篇文章节省了别人大量的时间。
所有这些都有可能失败。
我通过创建一个新的用户控件(TestControl)来修复它,它触发 Visual Studio 神奇地将项目的控件 tab + 控件添加回“工具箱”中。然后我删除了测试控件。
顺便说一下,这是我最近安装了 VS2008自动窗口更新之后发生的事情。
我也有同样的问题。经过大量的谷歌搜索,我没有找到任何东西,但偶然间我发现,如果你点击工具箱,而你在同一个项目中,你已经创建了用户控件,并选择“ 展示一切”,然后一个组与你的项目同名,将出现在工具箱的顶部,你可以找到你的用户控件。 现在可以在所需的窗体上添加控件了!
检查构建输出目录。如果由于某种原因,您正在除项目 bin 目录之外的其他地方构建输出,则您的控件将不会显示在工具箱中。
对于那些可能使用 ToolStripItems(例如 ToolStripStatusLabel)的人来说,要实际让你的派生控件显示在下拉菜单中(例如来自 StatusStrip的那个) ,您需要将类设置为 public然后构建解决方案。
ToolStripItems
ToolStripStatusLabel
StatusStrip
public
也不要忘记类的设计器属性,如下所示:
using System.Windows.Forms.Design; [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)] public class MyStatusLabel : ToolStripStatusLabel { }
我花了不少时间才做好,希望这能帮别人节省点时间。
用户控件不显示在工具箱中的另一个原因是它们没有缺省构造函数。
对我来说没什么有用的,除了这个。
这不是一个很好的解决方案,但是你应该尝试这些步骤
前提是你已经尝试过修补:
但你仍然看到它变成了灰色。
检查 路径长度和 在绝对路径中使用的字符。
我有一个项目居住在“ C: 用户我的名称我的公司研发项目” 几个小时后发现 “ R & D”是个问题。 “ & ”不允许在我的工具箱中启用我的用户控制项。
我几个小时前掉进了这个陷阱。 我有一个。NET 2.0 Windows 应用程序项目和一些自定义的用户控件; 它工作得很好。所以我决定把我的文件放在子文件夹中,使我的项目更干净一点。 此后,VisualStudio2010设计器停止加载我的窗体,并且 ToolBox 将不再显示我的控件。 我吓坏了,把源文件移回到项目根目录,重置 ToolBox,但似乎什么都没用。之后,我记得我使用 ReSharper“删除未使用的引用”,所以我尝试 放回未使用的参考书,特别是 系统,数据: 问题解决!校对: O 我不能告诉你为什么,但这对我很有用。 希望我的经验能帮到别人。 :) 再见 Nando
我的控件是公共的,它在“选择工具箱项”对话框中被选中,但仍然没有显示出来。
这就是最终对我奏效的方法:
右键单击“工具箱”中的某个位置,然后单击“选择项”。当我找到我的东西时,它已经被检查过了。然后我取消选中该项,点击 OK。接下来,我再次右键单击工具箱并搜索我的项目... 它不见了,所以我点击浏览,导航到 obj/x86/debug 文件夹并选择了我的 exe。然后该项被正确地添加到工具箱中。
我觉得是 VS 漏洞。
当我试图将我的 UserControl 添加到工具箱(右键单击工具箱,选择项目,选择我的 DLL)时,它会显示一条消息,说明我的 DLL 中没有控件。
无论如何,这个问题已经被解决了,通过尝试在 VS 中在我的 DLL 中创建一个表单并添加 UserControl。显示了一条错误信息,说明没有缺省构造函数
public UserControl() { ... }
设计器需要这个,因为它不知道什么是有效参数。一旦我向 UserControl 添加了一个空白构造函数,它就被毫无问题地添加到了工具箱中。
除了已经给出的所有指令(工具 > 选项 > Windows 窗体设计器 > 常规: AutoToolboxPopular) + 你需要构建解决方案(这对我来说是显而易见的) ,你可能需要注意类访问修饰符: 它必须是 PUBLIC。 我只是创建了一个控件,并没有出现在工具箱列表中,我不知道为什么。拍完之后
public class yourClass:control {}
比列表中显示的要多。 ;) 希望这能帮到别人。
如果您仍然不能找到为什么您的 vStudio 工具箱没有填充您的用户控件。然后您可以使用另一个视觉工作室来调试 vStudio。在这里你可以找到如何.
你好,它的答案是 Ctrl + Alt + X 用这个,然后你就有了工具箱:)
如果你已经尝试了所有其他的答案,它 还是不工作,以下为我修复它:
Properties
Build
Register for COM interop
在我的例子中,错误的原因是路径超出了我的控件的长度。DLL.我把它缩小了一点,一切都变得很正常。
我还发现路径中的特殊符号(例如我使用的 #)会影响控件的显示。
希望这能解决问题。
在 UserControl 中,确保 New 被声明为 公众人士。如果只是声明了 Sub New (默认为 Friend) ,它就不会显示。
症状1: 表单、用户控制和组件的 设计意见失败了!
症状2: 工具箱中的用户控制和组件
解决方案: 在 UserControl & Component 后面的 vb 中将范围设置为 公众人士
检查项目路径,避免 & 、 #等。
我把我的解决方案从 drive:\work\c#\folder\移到 drive:\work\folder,它解决了这个问题。
drive:\work\c#\folder\
drive:\work\folder
我的问题是: 我已经为我的控件添加了一个新的构造函数,它接受了一些参数,但是我没有显式地重新声明空的构造函数!工具箱只能包含具有空构造函数的控件。 一般来说,当您在 vb 中设计一个类时,它有一个隐式定义的空构造函数(意味着您不需要声明一个)。但是,一旦开始设计自己的构造函数,这个空的构造函数就会消失,因此您需要在代码中显式地重新定义它! 无论如何,我意识到最有经验的 vb 编码器已经知道这一切,但希望这可以帮助一些新手喜欢我自己:)。
我试图构建一个只有 x64的应用程序,所以我的平台目标当然设置为 x64。
x64
但是,即使在2016年,VisualStudio (devenv.exe)仍然是一个32位进程,不能加载64位程序集。要检查 VisualStudio 的位数,请打开任务管理器,并在进程名称下检查 *32。
devenv.exe
*32
解决方案,以查看工具箱中的控件: 在项目设置中将平台目标设置为 Any CPU。如果需要,可以对 Debug 和 Releasebuild 执行此操作。
Any CPU
正如前面提到的 给你,您应该告诉 Visual Studio 在工具箱中加载您的用户控件。
[ToolboxItem(true)] public class PanelTitle : LabelControl { // Whatever code to override LabelControl here... }
在尝试添加自定义控件之前,请确保该控件与。当前项目的网络版本。
我试图为 Windows CE 5.0和 Windows CE 5.0项目的工具箱添加一个自定义控件。Net Compactv3.5 on VS2008. 我做了所有以前的建议,但没有工作。当“全部显示”选中但是它是灰色的时候,即使在“选择项”菜单中也会显示该控件。
我用.Net v2.0创建了一个新项目,它工作得很好。