我在我的项目中做了一个用户控件,构建项目后,我需要将它放在我的工具箱中,并将其用作通用控件。但我不能。在UserControl
我的项目命名空间中,我尝试Choose Item
在右键菜单中,但我没有找到添加它的方法。
11 回答
我在让它们自动添加到工具箱时遇到了问题,就像在 VS2008/2005 中一样。
实际上有一个选项可以阻止工具箱自动填充!
转到工具 > 选项 > Windows 窗体设计器 > 常规
在列表底部,您会找到 Toolbox > AutoToolboxPopulate,在全新安装时默认为 False。将其设置为 true,然后重新构建您的解决方案。
嘿 presto,您的解决方案中的用户控件应该自动添加到工具箱中。
您可能还必须重新加载解决方案。
右键单击工具栏,然后单击上下文菜单中的“选择项目”。弹出一个带有已注册组件的对话框。在此对话框中单击“浏览”以选择您要使用的用户控件的程序集。
PS。这个程序集应该在之前注册。
I found that the user control must have a parameterless constructor or it won't show up in the list. at least that was true in vs2005.
使用 VS 2010:
假设您有一个 Windows.Forms 项目。您将一个 UserControl(例如 MyControl)添加到项目中,然后将其全部设计好。现在您想将它添加到您的工具箱中。
一旦项目成功构建一次,它就会出现在您的框架组件中。右键单击工具箱以获取上下文菜单,选择“选择项...”,然后在“.NET Framework 组件”选项卡下浏览到控件的名称 (MyControl)。
使用 dll 的优势:您可以在与表单相同的项目中编辑控件,并且表单将使用新控件构建。但是,该控件仅适用于该项目。
注意:如果控件有构建错误,请先解决它们,然后再转到包含的表单,否则设计者会心脏病发作。
我有许多用户控件,但一个拒绝显示在Toolbox中,即使我重建了解决方案并在“选择项目...”对话框中进行了检查。
解决方案:
- 从解决方案资源管理器我右键单击有问题的用户控制文件并选择从项目中排除
- 重建解决方案
- 右键单击用户控件并选择包含在项目中(假设您在解决方案资源管理器中启用了显示所有文件)
请注意,这还需要您启用AutoToolboxPopulate选项。正如@DaveF 的回答所暗示的那样。
替代解决方案:我不确定这是否有效,我无法尝试,因为我已经解决了我的问题,但是如果您从选择项目...对话框中取消选中用户控件,请点击确定,然后将其打开备份并检查了用户控件。这也可能奏效。
有几种方法。
在您的原始项目中,选择 File|Export template
然后选择 ItemTemplate 并按照向导进行操作。将您的 UserControl 移动到单独的 ClassLibrary(并修复命名空间等)。
从需要它的项目中将 ref 添加到类库。不要打扰 GAC 或任何东西,只需 DLL 文件。
我不建议将 UserControl 放在普通的 ToolBox 中,但可以这样做。请参阅@Arseny 的答案
就我而言,我看不到项目中的任何控件。仅当右键单击工具箱并选择“全部显示”时,我才看到它们,但是它们被禁用了...
将项目类型从 Windows 应用程序更改为 ClassLibrary 进行了修复。
如果您在基本控件中使用泛型,则基本问题。如果是:
假设我们有控制权:
public class MyComboDropDown : ComboDropDownComon<MyType>
{
public MyComboDropDown() { }
}
MyComboDropDown 将不允许在其上打开设计器,并且不会显示在工具箱中。为什么?因为基本控件尚未编译 - 当 MyComboDropDown 被编译时。您可以修改为:
public class MyComboDropDown : MyComboDropDownBase
{
public MyComboDropDown() { }
}
public class MyComboDropDownBase : ComboDropDownComon<MyType>
{
}
比重建和重置工具箱后,它应该能够在设计器和工具箱中看到 MyComboDropDown
我的设计师的问题是 32 位与 64 位的问题。按照无法将 64 位程序集中的控件添加到工具箱或在 Visual Studio IDE MS 知识库文章中的设计器中使用中的说明,我可以将控件添加到工具箱。
重新编译对我有用!
我刚刚在 VS 2022 上遇到了这个问题。可能有一个快速/简单的答案。
我快速而肮脏的用户控件不会出现在工具箱中(完全重建等)。
我退出了解决方案和 VS,重新加载了所有内容,重新构建,它出现并工作了。