代码之家  ›  专栏  ›  技术社区  ›  Robert Deml

用户控件未显示在工具箱中

  •  71
  • Robert Deml  · 技术社区  · 16 年前

    但是,UserControls没有显示在工具箱中,我无法将其拖动到windows窗体。

    如何让VS2008使用我的用户控件填充工具箱?

    29 回复  |  直到 16 年前
        1
  •  81
  •   Ryan Lundy    16 年前

    工具>选项>Windows窗体设计器>常规:自动ToolboxPopulate

    应将其设置为True,以使其正常工作。

        2
  •  33
  •   Community miroxlav    7 年前
    1. 构建项目以确保其可编译。

    2. 使用希望用户控制的表单,打开工具箱,右键单击并选择“选择项”

    3. 浏览到您在步骤1中编译的.exe或dll。

    4. 确保用户控件旁边有一个勾号,然后按OK。

    5. 您的用户控件应该出现在工具箱中,因此将其拖到窗体上。

    Calanus's answer to a similar question .

        3
  •  20
  •   Maxime Larocque    14 年前

    在我的例子中,已经设置了AutoToolboxPopulate(Visual C#2010 Express)。

        4
  •  11
  •   John Petrak    14 年前

    到目前为止,我对工具箱中没有显示usercontrols没有任何问题。构建项目,它就会出现。那么今天不行了。经过一番搜寻,我跟着他走了,但还是没有什么乐趣。

    • 工具>选项>Windows窗体设计器>常规:自动ToolboxPopulate
    • 将VS设置重置为默认值

    因此,在花了几个小时的时间试图让它正常工作但没有成功之后,我创建了一个新的WPF windows项目,接受默认名称并添加了一个usercontrol。

    删除了项目,创建了一个新项目,并添加了一个新控件。 建造了这个项目,但没有成功。

    唯一不同的是,我为项目选择了一个名称,在名称“WPF应用程序”中包含了一个空格。

    如果希望usercontrols在生成时自动显示在工具箱中,请不要在项目名称中使用空格。希望这篇文章能为其他人节省大量浪费的时间。

        5
  •  6
  •   wlf    12 年前

    用户控件可能不会显示在工具箱中的另一个原因是它们没有默认构造函数。

        6
  •  5
  •   SoMoS SoMoS    15 年前

    还要仔细检查用户控件是否具有有效的命名空间。

    我刚刚发现没有名称空间的控件没有放在工具箱中。

        7
  •  4
  •   Filip Frącz    16 年前

    通常,您需要构建解决方案。这几乎总是对我有用。

        8
  •  3
  •   Ant    13 年前

    全部展示 ,则与项目同名的组将出现在工具箱顶部,您可以在其中找到用户控件。 现在,您可以将控件添加到所需表单上!

        9
  •  3
  •   Dan7    13 年前

    对于可能与你一起工作的人 ToolStripItems (例如。 ToolStripStatusLabel ),以实际使派生控件显示在下拉菜单中(例如 StatusStrip ), 您需要将类设置为 public 然后构建解决方案。

    另外,不要忘记类的designer属性,如下所示:

    using System.Windows.Forms.Design;
    
    [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
    public class MyStatusLabel : ToolStripStatusLabel
    {
    }
    

        10
  •  3
  •   Chriszimort    11 年前

    我的控件是公共的,它在“选择工具箱项”对话框中被选中,但它仍然没有显示。

    这就是最终对我起作用的原因:

    右键单击工具箱中的某个位置,然后单击“选择项”。当我找到我的物品时,它已经被检查过了。然后我取消选中该项并单击OK。接下来,我再次右键单击工具箱并搜索我的项目。。。它不见了,所以我点击浏览,导航到obj/x86/debug文件夹并选择了我的exe。然后将该项正确添加到工具箱中。

    我认为这是一个VS错误。

        11
  •  3
  •   Alexa Adrian    11 年前

    除了给出的所有说明(工具>选项>Windows窗体设计器>常规:AutoToolboxPopulate)+您需要构建解决方案(这对我来说很明显),您可能需要注意类访问修饰符:它必须是公共的。 我只是创建了一个控件,并没有出现在工具箱列表中,我也不知道为什么。那么在赛后呢

    public class  yourClass:control {}
    

    比列表中显示的要多。;) 希望这能帮助别人。

        12
  •  2
  •   Russell    13 年前

    检查生成输出目录。如果出于某种原因,您在project bin\目录之外的其他位置生成输出,则您的控件将不会显示在工具箱中。

        13
  •  2
  •   BrianEsler    10 年前

    我的问题是: 我为我的控件添加了一个新的构造函数,它接受了一些参数,但我没有显式地重新声明空构造函数!工具箱只能包含具有空构造函数的控件。 无论如何,我知道最有经验的vb程序员已经知道了这一切,但希望这能帮助像我这样的新手:)。

        14
  •  1
  •   mrjoltcola    13 年前

    上述所有操作都可能失败。

    顺便说一句,这发生在我最近安装VS2008自动windows更新后。

        15
  •  1
  •   Brock Adams    13 年前

    一个朋友给我展示了一种加速的方法。对于您创建的每个新控件,不必单击工具箱中的“选择项…”等,您可以创建一个名为 MyCustomControls 在那里,您可以创建自定义控件。

    然后重建。
    AutoToolboxPopulate (我想)

        16
  •  1
  •   Dean Hiller    12 年前

    好吧,除了这个对我来说没什么用。。。

    1. 我在我的解决方案中创建了一个新项目,对于这个项目,它是有效的,所以我打算开始使用这个项目
    2. 我开始调整csproj文件的xml,以找出同一解决方案中我的另一个项目有什么问题,然后我重新设置它,因为它似乎不起作用

    这不是一个很好的解决方案,但您应该尝试以下步骤

    1. 查看它是否适用于全新的解决方案/项目。
    2. 如果#2起作用,也许可以比较.csproj文件……不知何故,我的文件在我这样做时又开始起作用了(这非常令人沮丧)。
        17
  •  1
  •   G.Y    12 年前

    如果您已经尝试修补:

    • 创建了一个默认构造函数
    • 构建项目/重置工具箱并手动添加选项卡

    并检查 绝对路径中正在使用的字符 .

    我有一个项目位于“C:\Users\myName\myCompany\R&D\Projects”
    “研发” 问题是。。
    &

        18
  •  1
  •   Ferdinando Santacroce    12 年前

    我几个小时前就掉进了这个陷阱。


    我吓坏了,在ProjectRoot中移回源文件,重置工具箱,但似乎什么都不起作用。之后,我记得我使用了ReSharper“删除未使用的引用”,所以我尝试 放回未使用的引用 尤其是 系统数据 :问题解决了!:O
    希望我的经验能帮助别人。:)
    再见,南多

        19
  •  1
  •   stivoberlin    11 年前
        20
  •  1
  •   Forest Kunecke    11 年前

    如果你试着遵循所有其他答案,并且 不起作用,下面为我修复了它:

    • 右键单击包含控件的项目。
    • 选择 Properties .
    • Build 设置类别,请确保 Register for COM interop
        21
  •  1
  •   Alex Urazaev    11 年前

    在我的例子中,错误的原因是指向控件的.dll的路径长度过长。我把它缩小了一点,一切都正常了。

    我还发现路径中的特殊符号(例如,我使用了#)会影响控件的显示。

    希望它能解决这个问题。

        22
  •  1
  •   Thomas Weller    8 年前

    我试图构建一个仅限x64的应用程序,因此我的平台目标设置为 x64 当然

    devenv.exe )仍然是32位进程,无法加载64位程序集。要检查Visual Studio的位,请打开任务管理器并检查 *32

    Any CPU 在项目设置中。如果需要,为调试和发布版本执行此操作。

        23
  •  1
  •   Community miroxlav    7 年前

    如上所述 here

    [ToolboxItem(true)]
    public class PanelTitle : LabelControl  {
    // Whatever code to override LabelControl here...
    }
    
        24
  •  0
  •   smirkingman    10 年前

    在UserControl中,确保声明了New 平民的 . 如果它只是声明为Sub New(默认为Friend),则不会显示。

        25
  •  0
  •   Buddha Bear    10 年前

    症状1:心脏病 对于窗体、用户控件和;组件失败了!

    • 我的表单设计视图失败,消息为“找不到‘用户控件’”

    症状2:用户控制&组件 工具箱

    解决方案:将范围设置为 平民的 在用户控件后面的vb中,&组成部分

        26
  •  0
  •   Emmanuel    10 年前

    检查项目路径,避免 & ,

    我已将我的解决方案从 drive:\work\c#\folder\ drive:\work\folder 它解决了这个问题。

        27
  •  0
  •   Thomas Weller    8 年前

    当我尝试将UserControl添加到工具箱(右键单击工具箱,选择项,选择我的DLL)时,它会显示一条消息,说明我的DLL中没有控件。

    无论如何,通过在VS中尝试在我的DLL中创建表单并添加UserControl,问题得到了解决。显示一条错误消息,说明没有默认构造函数

    public UserControl() {
    ...
    }
    

        28
  •  0
  •   Aouffen    7 年前

    在尝试添加自定义控件之前,请确保它与当前项目的.Net版本兼容。

    我试图为VS2008上的WindowsCE5.0和.NETCompactV3.5项目的工具箱添加一个自定义控件。

    我用.NETV2.0创建了一个新项目,它运行得非常好。

        29
  •  -1
  •   MéhmétCãn Kãrã    11 年前

    您好,它的答案是Ctrl+Alt+X拿着这个,稍后你就有工具箱了:)