继承控件不会显示在设计器中

时间:2012-10-09 00:52:16

标签: c# winforms inheritance user-controls

尝试在继承自Panel的C#Winforms中创建一个简单的自定义控件,但是一旦我将其更改为从“Panel”而不是“UserControl”继承,我就会收到此错误:

enter image description here

以下是整个班级的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SETPaint
{
    public partial class Canvas : Panel
    {
        public Canvas()
        {
        InitializeComponent();
        }

        private void Canvas_Load(object sender, EventArgs e)
        {

        }
    }
}

2 个答案:

答案 0 :(得分:3)

删除Designer.cs文件中的'this.AutoScaleDimensions = ...'行(根据例外,第35行)。可能还有另一个类似'this.AutoScaleMode = .Font'。

出现此问题的原因是,当Control从UserControl派生时,您使用了Designer,并在InitializeComponent()方法中设置了一些默认属性。这些属性是UserControl基类型的一部分,但不是Panel基类型。

由于IDE Designer无法加载Designer.cs文件来解决此问题,因此您需要手动执行此操作。

答案 1 :(得分:-1)

您的代码应该是这样的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SETPaint
{
    public class Canvas : Panel
    {

    }
}

在构建解决方案后,工具箱上应该有一个名为Canvas的项目