我有一个通用的抽象UserControl
类SensorControl
,我希望所有传感器控制面板都可以继承。
尝试在Visual Studio中设计EthernetSensorControl
(我继承的UserControl表单之一时,表单设计器中显示以下错误:
无法为此文件显示设计器,因为其中没有可以设计的类。设计人员检查了文件中的以下类:DeviceSensorControl ---无法加载基类“Engine.Sensors.SensorControl”。确保已引用程序集并且已构建所有项目。
SensorControl
类:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Engine.Sensors
{
public abstract class SensorControl<SensorType>
: UserControl where SensorType : class
{
protected SensorType _sensor;
public SensorControl(SensorType sensor)
{
_sensor = sensor;
}
}
}
EthernetSensorControl
:namespace Engine.Sensors
{
public partial class EthernetSensorControl
: SensorControl<EthernetSensor>
{
public EthernetSensorControl(EthernetSensor sensor)
: base(sensor)
{
}
}
}
在System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager) 在Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager) 在System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)
所有内容都会编译,我可以看到显示的面板,但我无法设计它。我认为问题可能与partial
类有关。有什么想法吗?
答案 0 :(得分:9)
您无法设计继承abstract
类的控件或表单。
(设计者需要实例化基类作为设计表面)
基类还需要一个无参数构造函数供设计者调用 这个构造函数可以是私有的。