我在我的项目中创建了一个usercontrol,在构建项目之后,我需要将它放在我的工具箱中,并将其用作通用控件。但我不能。 UserControl
在我的项目命名空间中,我在右键菜单中尝试Choose Item
,但我没有找到添加它的方法。
答案 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)
我有很多用户控件,但有一个拒绝显示在工具箱中,即使我重新构建了解决方案并且已在选择项目... 对话框中进行了检查。
解决方案:
注意这还要求您启用 AutoToolboxPopulate 选项。正如@DaveF的回答所示。
替代解决方案:我不确定这是否有效,我无法尝试,因为我已经解决了我的问题,但是如果您从选择项目中取消选中用户控件... 对话框,单击确定,然后将其打开并检查用户控件。这也可能有用。
答案 5 :(得分:3)
有两种方法。
在原始项目中,选择“文件”|“导出模板” 然后选择ItemTemplate并按照向导进行操作。
将您的UserControl移动到单独的ClassLibrary(并修复名称空间等) 从需要它的Projects中添加一个refl到classlibrary。不要打扰GAC或任何东西,只需要DLL文件。
我不建议将UserControl放在普通的ToolBox中,但可以这样做。请参阅@Arseny的答案
答案 6 :(得分:2)
据我所知,您可以将当前项目中的用户控件拖放到工具箱中。问题是当您选择其他项目时,用户控件就消失了。所以我认为你必须建立一个单独的控制库项目:
在您的解决方案中,添加一个新项目,但是作为项目模板选择“类库”。在THAT项目中,添加用户控件,并执行您需要执行的所有操作。一旦完成,构建它,你将拥有一个dll文件(它可以很容易地在项目bin / debug文件夹中找到。)
您可以将此dll添加到工具箱中(右键单击添加...),它将保留在所有项目中!
答案 7 :(得分:2)
就我而言,我无法看到项目中的任何控件。只有右键单击工具箱并选择"全部显示"我看到了他们,但他们被禁用了......
将项目类型从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)
重新编译为我做了诀窍!