如何将UserControl放入Visual Studio工具箱

时间:2010-08-10 06:02:05

标签: c# winforms visual-studio-2010 toolbox

我在我的项目中创建了一个usercontrol,在构建项目之后,我需要将它放在我的工具箱中,并将其用作通用控件。但我不能。 UserControl在我的项目命名空间中,我在右键菜单中尝试Choose Item,但我没有找到添加它的方法。

11 个答案:

答案 0 :(得分:107)

我假设您正在使用VS2010(这就是您标记的问题) 我在VS2008 / 2005中将它们自动添加到工具箱时遇到了问题。 实际上有一个选项可以阻止工具箱自动填充!

转到工具>选项> Windows窗体设计器>一般

在列表底部,您会找到工具箱> AutoToolboxPopulate在全新安装时默认为False。将其设置为true,然后重建解决方案。

嘿,他们在解决方案中的用户控件应该自动添加到工具箱中。 您可能还需要重新加载解决方案。

答案 1 :(得分:34)

右键单击工具栏,然后在上下文菜单中单击“选择项目”。弹出带有已注册组件的对话框。在此对话框中单击“浏览”以选择包含要使用的用户控件的程序集。

PS。 该组件应在之前注册。

答案 2 :(得分:22)

我发现用户控件必须有一个无参数构造函数,否则它不会显示在列表中。至少在vs2005中是这样。

答案 3 :(得分:14)

使用VS 2010:

假设您有一个Windows.Forms项目。您将UserControl(比如MyControl)添加到项目中,并将其全部设计出来。现在您要将其添加到工具箱中。

只要项目成功构建一次,它就会出现在Framework Components中。右键单击工具箱以获取上下文菜单,选择“选择项目...”,然后浏览到“.NET Framework组件”选项卡下的控件名称(MyControl)。

使用dll的优势:您可以在与表单相同的项目中编辑控件,并使用新控件构建表单。但是,该控件只能用于此项目。

注意:如果控件存在构建错误,请在移至包含表单之前解决它们,否则设计人员会心脏病发作。

答案 4 :(得分:6)

我有很多用户控件,但有一个拒绝显示在工具箱中,即使我重新构建了解决方案并且已在选择项目... 对话框中进行了检查。

解决方案:

  1. 解决方案资源管理器右键单击违规用户控制文件并选择从项目中排除
  2. 重建解决方案
  3. 右键单击用户控件并选择包含在项目中(假设您在解决方案资源管理器中启用了显示所有文件)< / LI>

    注意这还要求您启用 AutoToolboxPopulate 选项。正如@DaveF的回答所示。

    替代解决方案:我不确定这是否有效,我无法尝试,因为我已经解决了我的问题,但是如果您从选择项目中取消选中用户控件... 对话框,单击确定,然后将其打开并检查用户控件。这也可能有用。

答案 5 :(得分:3)

有两种方法。

  1. 在原始项目中,选择“文件”|“导出模板” 然后选择ItemTemplate并按照向导进行操作。

  2. 将您的UserControl移动到单独的ClassLibrary(并修复名称空间等) 从需要它的Projects中添加一个refl到classlibrary。不要打扰GAC或任何东西,只需要DLL文件。

  3. 我不建议将UserControl放在普通的ToolBox中,但可以这样做。请参阅@Arseny的答案

答案 6 :(得分:2)

据我所知,您可以将当前项目中的用户控件拖放到工具箱中。问题是当您选择其他项目时,用户控件就消失了。所以我认为你必须建立一个单独的控制库项目:

在您的解决方案中,添加一个新项目,但是作为项目模板选择“类库”。在THAT项目中,添加用户控件,并执行您需要执行的所有操作。一旦完成,构建它,你将拥有一个dll文件(它可以很容易地在项目bin / debug文件夹中找到。)

您可以将此dll添加到工具箱中(右键单击添加...),它将保留在所有项目中!

答案 7 :(得分:2)

就我而言,我无法看到项目中的任何控件。只有右键单击工具箱并选择&#34;全部显示&#34;我看到了他们,但他们被禁用了......

将项目类型从Windows应用程序更改为ClassLibrary进行了修复。

答案 8 :(得分:1)

如果您在基本控件中使用泛型,那么基本的qustion。 如果是的话:

让我们说我们有控制权:

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

MyComboDropDown不允许在其上打开设计器,也不会在工具箱中显示。 为什么?因为基本控件尚未编译 - 当MyComboDropDown被编译时。 您可以修改为:

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

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

比重建之后,重置工具箱它应该能够在设计器和工具箱中看到MyComboDropDown

答案 9 :(得分:0)

我的设计师的问题是32比64位问题。按照Cannot add Controls from 64-bit Assemblies to the Toolbox or Use in Designers Within the Visual Studio IDE MS KB文章中的说明,我可以将控件添加到工具箱中。

答案 10 :(得分:0)

重新编译为我做了诀窍!