我创建了一个具有设计时支持的自定义用户控件,如下所示:
项目/程序集“MyUserControl”
- MyUserControl.cs
- MyUserControlDesigner.cs
代码是这样的:
namespace MyUserControl
{
[Designer("MyUserControl.Design.MyUserControlDesigner, MyUserControl", typeof(IDesigner))]
public class MyUserControl : Control
{
// Some stuff here
}
}
namespace MyUserControl.Design
{
public class MyUserControlDesigner : ControlDesigner
{
// Some other stuff here
}
}
只要这两个类在同一个程序集中,一切正常。 VS2012 显示了我所有的设计器选项。但是出于显而易见的原因(对 System.Design 和其他人的引用),我不想在我的 MyUserControl 程序集中使用设计器代码,而是在 MyUserControl.Design 中。所以我在同一个解决方案中创建了第二个项目:
项目/程序集“MyUserControl”
项目/程序集“MyUserControl.Design”
代码是这样的:
namespace MyUserControl
{
[Designer("MyUserControl.Design.MyUserControlDesigner, MyUserControl.Design", typeof(IDesigner))]
public class MyUserControl : Control
{
// Some stuff here
}
}
用这个的时候,根本找不到设计器。 VS2012 不显示内联可选组件,而是像一个没有附加设计器的组件。
我是否必须将设计器程序集添加到 GAC 才能让 VS2012 找到它,或者这里有什么问题?
编辑:将对 MyUserControl.Design 的引用添加到 WindowsFormsApplication1 时一切正常,但这正是您不想要的...
您需要将 MyUserControlDesigner
设为公共(public)类。
我是一名优秀的程序员,十分优秀!