我在程序集dll中编写了一个 的UserControl后代。
如何删除表单上的控件?
namespace StackOverflowExample
{
public partial class MonthViewCalendar : UserControl
{
...
}
}
我在解决方案资源管理器中的引用节点下添加了对程序集的引用,但我的工具箱中没有出现新控件
如何让控件出现在工具箱中,以便将其放在表单上?
更新1 :
我尝试在Visual Studio选项中构建程序集:
工具 - > 选项... - > Windows窗体设计器 - > AutoToolboxPopulate = true
在新解决方案的工具箱中未显示控件。
注意:我不知何故错误地写了“......在装配dll中不是 ......”。我不知道我是怎么设法写的,当它在程序集dll中具体 时。当他们在同一个项目中时,控件已经神奇地出现了,但现在不是它是一个不同的项目/解决方案。
更新2:回答
浏览到包含该控件的程序集dll 文件,然后选择打开
注意:程序集中的控件将以静默方式添加到.NET Framework组件列表中。
答案 0 :(得分:4)
通常,在构建项目时,您的用户控件将显示在顶部的工具箱中。通常,您将看到一个新窗格,其中包含每个程序集和控件。
如果没有发生这种情况,您还可以通过右键单击工具箱,选择选择项目,然后在 .NET Framework组件下浏览来添加您的控件汇编,添加它,然后确保检查您的控件。
答案 1 :(得分:1)
我注意到,当您的项目(包含控件/组件)与您的解决方案位于同一文件夹中时,用户控件和组件仅由vs2005自动添加到工具箱中。当此项目位于子文件夹vs2005中时,不会在工具箱中添加控件和组件。
答案 2 :(得分:0)
您需要构建包含您已创建的控件的项目,并确保为工具箱重新设置了选项。如果你没有从默认值更改它,它应该工作;否则,请转到工具 - >选项... ,然后选择Windows窗体设计器组。确保 AutoToolboxPopulate 选项设置为 true 。
您无需ToolboxItemAttribute
即可使用。如果提供组件与消耗组件位于同一解决方案中,它应出现在工具箱中。如果提供程序集不是解决方案的一部分,则可以通过从工具箱上下文菜单中选择**选择项目... *并直接添加程序集,手动将程序集添加到工具箱。如果您希望工具箱自动选择它们,则需要使用ToolboxItemAttribute
。
答案 3 :(得分:0)
我偶然发现了一些问题。最后,只需重建和重新引用即可。我更喜欢从UserControl继承。它让我的生活更简单;)
例如,如果要创建“圆角边框”标签,请执行以下操作:
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace YourUIControls
{
[DefaultProperty("TextString")]
[DefaultEvent("TextClick")]
public partial class RoundedLabel : UserControl
{
public RoundedLabel()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
//Draw your label here…
}
}
}
编译并添加对输出的引用。您可以将其拖到工具箱中,然后再拖到Designer中。
答案 4 :(得分:-1)
将ToolboxAttribute添加到您的班级。