我在我的项目中创建了一个usercontrol,在构建项目之后,我需要将它放在我的工具箱中,并将其用作通用控件 . 但我不能 . UserControl 在我的项目命名空间中,我在右键菜单中尝试了 Choose Item ,但我没有找到添加它的方法 .
UserControl
Choose Item
我假设你正在使用VS2010(这就是你标记的问题)我在VS2008 / 2005中将它们自动添加到工具箱时遇到了问题 . 实际上有一个选项可以阻止工具箱自动填充!
转到工具>选项> Windows窗体设计器>常规
在列表的底部,您会找到Toolbox> AutoToolboxPopulate,它在全新安装时默认为False . 将其设置为true,然后重建您的解决方案 .
嘿presto他们在你的解决方案中的用户控件应该自动添加到工具箱中 . 您可能还需要重新加载解决方案 .
右键单击工具栏,然后单击上下文菜单中的“选择项目” . 弹出带有已注册组件的对话框 . 在此对话框中单击“浏览”以使用要使用的用户控件选择程序集 .
PS . 此组件应在之前注册 .
我发现用户控件必须具有无参数构造函数,否则它将不会显示在列表中 . 至少在vs2005中是这样的 .
使用VS 2010:
假设您有一个Windows.Forms项目 . 您将UserControl(比如MyControl)添加到项目中,并将其全部设计出来 . 现在您要将其添加到工具箱中 .
只要项目成功构建一次,它就会出现在Framework Components中 . 右键单击工具箱以获取上下文菜单,选择“选择项目...”,然后浏览到“.NET Framework组件”选项卡下的控件名称(MyControl) .
使用dll的优势:您可以在与表单相同的项目中编辑控件,并使用新控件构建表单 . 但是,该控件仅适用于此项目 .
注意:如果控件存在构建错误,请在移至包含表单之前解决它们,否则设计人员会发生心脏病发作 .
我有很多用户控件,但有一个拒绝显示在工具箱中,即使我重新构建了解决方案并且已在“选择项目...”对话框中进行了检查 .
解:
从解决方案资源管理器中我右键单击了有问题的用户控制文件并选择了 Exclude From Project
Rebuild 解决方案
右键单击用户控件并选择“包含在项目中”(假设您在“解决方案资源管理器”中启用了“显示所有文件”)
Note 这还要求您启用AutoToolboxPopulate选项 . 正如@DaveF的回答所示 .
备用解决方案:我尝试了,因为我已经解决了我的问题,但是如果您从“选择项目...”对话框中取消选中用户控件,请单击“确定”,然后将其打开并检查用户控件 . 这也可能有用 .
有几种方法 .
在原始项目中,选择“文件”|“导出模板”然后选择ItemTemplate并按照向导进行操作 .
将UserControl移动到单独的ClassLibrary(并修复名称空间等) .从需要它的Projects中添加一个refl到classlibrary . 不要打扰GAC或任何东西,只需要DLL文件 .
我不建议将UserControl放在普通的ToolBox中,但是可以做到 . 请参阅@Arseny的答案
据我所知,您可以将当前项目中的usercontrol拖放到工具箱中 . 问题是当您选择其他项目时,用户控件就消失了 . 所以我认为你必须 Build 一个单独的控制库项目:
在您的解决方案中,添加一个新项目,但是作为项目模板选择“类库” . 在THAT项目中,添加用户控件,并执行您需要执行的所有操作 . 一旦完成,构建它,你将拥有一个DLL文件(它可以很容易地在项目bin / debug文件夹中找到 . )
您可以将此dll添加到您的工具箱中(右键单击添加...),它将保留在所有项目中!
在我的情况下,我看不到项目中的任何控件 . 只有当右键单击toolBox并选择“全部显示”时,我才看到它们,但是它们被禁用了......
将项目类型从Windows应用程序更改为ClassLibrary进行了修复 .
如果您在基本控件中使用泛型,那么基本的qustion . 如是:
让我们说我们有控制权:
public class MyComboDropDown : ComboDropDownComon<MyType> { public MyComboDropDown() { } }
MyComboDropDown不允许在其上打开设计器,也不会在工具箱中显示 . 为什么?因为基本控制尚未完成编译 - 当MyComboDropDown被编译时 . 您可以修改为:
public class MyComboDropDown : MyComboDropDownBase { public MyComboDropDown() { } } public class MyComboDropDownBase : ComboDropDownComon<MyType> { }
比重建后,重置工具箱,它应该能够在设计器和工具箱中看到MyComboDropDown
我的设计师的问题是32比64位问题 . 按照Cannot add Controls from 64-bit Assemblies to the Toolbox or Use in Designers Within the Visual Studio IDE MS KB文章中的说明操作后,我可以将控件添加到工具箱中 .
重新编译为我做了诀窍!
11 回答
我假设你正在使用VS2010(这就是你标记的问题)我在VS2008 / 2005中将它们自动添加到工具箱时遇到了问题 . 实际上有一个选项可以阻止工具箱自动填充!
转到工具>选项> Windows窗体设计器>常规
在列表的底部,您会找到Toolbox> AutoToolboxPopulate,它在全新安装时默认为False . 将其设置为true,然后重建您的解决方案 .
嘿presto他们在你的解决方案中的用户控件应该自动添加到工具箱中 . 您可能还需要重新加载解决方案 .
右键单击工具栏,然后单击上下文菜单中的“选择项目” . 弹出带有已注册组件的对话框 . 在此对话框中单击“浏览”以使用要使用的用户控件选择程序集 .
PS . 此组件应在之前注册 .
我发现用户控件必须具有无参数构造函数,否则它将不会显示在列表中 . 至少在vs2005中是这样的 .
使用VS 2010:
假设您有一个Windows.Forms项目 . 您将UserControl(比如MyControl)添加到项目中,并将其全部设计出来 . 现在您要将其添加到工具箱中 .
只要项目成功构建一次,它就会出现在Framework Components中 . 右键单击工具箱以获取上下文菜单,选择“选择项目...”,然后浏览到“.NET Framework组件”选项卡下的控件名称(MyControl) .
使用dll的优势:您可以在与表单相同的项目中编辑控件,并使用新控件构建表单 . 但是,该控件仅适用于此项目 .
注意:如果控件存在构建错误,请在移至包含表单之前解决它们,否则设计人员会发生心脏病发作 .
我有很多用户控件,但有一个拒绝显示在工具箱中,即使我重新构建了解决方案并且已在“选择项目...”对话框中进行了检查 .
解:
从解决方案资源管理器中我右键单击了有问题的用户控制文件并选择了 Exclude From Project
Rebuild 解决方案
右键单击用户控件并选择“包含在项目中”(假设您在“解决方案资源管理器”中启用了“显示所有文件”)
Note 这还要求您启用AutoToolboxPopulate选项 . 正如@DaveF的回答所示 .
备用解决方案:我尝试了,因为我已经解决了我的问题,但是如果您从“选择项目...”对话框中取消选中用户控件,请单击“确定”,然后将其打开并检查用户控件 . 这也可能有用 .
有几种方法 .
在原始项目中,选择“文件”|“导出模板”
然后选择ItemTemplate并按照向导进行操作 .
将UserControl移动到单独的ClassLibrary(并修复名称空间等) .
从需要它的Projects中添加一个refl到classlibrary . 不要打扰GAC或任何东西,只需要DLL文件 .
我不建议将UserControl放在普通的ToolBox中,但是可以做到 . 请参阅@Arseny的答案
据我所知,您可以将当前项目中的usercontrol拖放到工具箱中 . 问题是当您选择其他项目时,用户控件就消失了 . 所以我认为你必须 Build 一个单独的控制库项目:
在您的解决方案中,添加一个新项目,但是作为项目模板选择“类库” . 在THAT项目中,添加用户控件,并执行您需要执行的所有操作 . 一旦完成,构建它,你将拥有一个DLL文件(它可以很容易地在项目bin / debug文件夹中找到 . )
您可以将此dll添加到您的工具箱中(右键单击添加...),它将保留在所有项目中!
在我的情况下,我看不到项目中的任何控件 . 只有当右键单击toolBox并选择“全部显示”时,我才看到它们,但是它们被禁用了......
将项目类型从Windows应用程序更改为ClassLibrary进行了修复 .
如果您在基本控件中使用泛型,那么基本的qustion . 如是:
让我们说我们有控制权:
MyComboDropDown不允许在其上打开设计器,也不会在工具箱中显示 . 为什么?因为基本控制尚未完成编译 - 当MyComboDropDown被编译时 . 您可以修改为:
比重建后,重置工具箱,它应该能够在设计器和工具箱中看到MyComboDropDown
我的设计师的问题是32比64位问题 . 按照Cannot add Controls from 64-bit Assemblies to the Toolbox or Use in Designers Within the Visual Studio IDE MS KB文章中的说明操作后,我可以将控件添加到工具箱中 .
重新编译为我做了诀窍!