2

我写了一个在程序集 dll 中的UserControl 后代。

如何将控件放在表单上?

namespace StackOverflowExample
{
   public partial class MonthViewCalendar : UserControl
   {
      ...
   }
}

我在解决方案资源管理器的引用节点下添加了对程序集的引用,但我的工具箱中没有出现新控件。

如何使控件出现在工具箱中,以便我可以将其放在表单上?


更新 1

我尝试在 Visual Studio 选项中构建程序集:

工具-->选项... --> Windows 窗体设计器--> AutoToolboxPopulate = true

在新解决方案的工具箱中时,该控件未出现。

注意:我不知何故错误地写了“……那不在程序集 dll 中……”。我不知道我是怎么写出来的,特别在程序集 dll 中。当它们在同一个项目中时,控件神奇地出现了,但现在不是因为它是不同的项目/解决方案。


更新 2:答案

  1. 右键单击工具箱
  2. 选择选择项目...
  3. .NET Framework 组件选项卡
  4. 选择浏览...
  5. 浏览到包含控件的程序集 dll文件并选择打开

    注意:程序集中的控件将以静默方式添加到 .NET Framework 组件列表中。

  6. 检查您希望出现在工具箱中的每个控件
  7. 选择确定
4

5 回答 5

4

通常,当您构建项目时,您的用户控件将出现在顶部的工具箱中。通常,您会看到一个新窗格,其中包含每个程序集和控件。

如果这没有发生,您还可以通过右键单击工具箱,选择选择项来添加控件,然后在.NET Framework Components下浏览您的程序集,添加它,然后确保选中您的控件。

于 2008-10-24T14:34:42.003 回答
1

我注意到的是,只有当您的项目(包含控件/组件)与解决方案位于同一文件夹中时,vs2005 才会自动将用户控件和组件添加到工具箱中。当此项目在子文件夹中时,vs2005 不会在工具箱中添加控件和组件。

于 2011-05-16T11:07:19.163 回答
0

您需要构建包含您创建的控件的项目,并确保您的选项设置为工具箱重建。如果你没有改变它的默认值,它应该可以工作;否则,转到Tools-->Options...并选择 Windows Forms Designer 组。确保AutoToolboxPopulate选项设置为true

你不需要ToolboxItemAttribute它来工作。如果提供程序集与使用程序集位于同一解决方案中,则它应该出现在工具箱中。如果提供的程序集不是解决方案的一部分,您可以通过从工具箱上下文菜单中选择 **Choose items...* 并直接添加程序集来手动将程序集添加到工具箱。如果您希望工具箱自动拾取它们,则需要使用ToolboxItemAttribute.

于 2008-10-24T14:30:49.063 回答
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…
         }
     }
}

编译并添加对输出的引用。您将能够将其拖到工具箱中,然后再拖到设计器中。

于 2008-10-24T15:08:52.607 回答
-1

将 ToolboxAttribute 添加到您的类中。

于 2008-10-24T14:30:14.010 回答