Visual Studio 2019 Winforms控件设计器打开报错如何解决?
WinForms自定义控件VS2019设计器报错问题
使用Visual Studio 2019打开WinForms自定义控件的设计器时出现报错,报错截图如下:
打开设计器时报错提示偶尔会切换,另一报错截图如下:
已尝试重装Visual Studio,故障仍未解决,相关自定义控件代码如下:
CustomContol1.cs 代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace DBControls { public partial class CustomControl1 : Control { public CustomControl1() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs pe) { base.OnPaint(pe); } } }
CustomContol1.Designer.cs 代码
using System.Windows.Forms; namespace DBControls { public partial class CustomControl1 { /// <summary> /// 必需的设计器变量 /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源 /// </summary> /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region 组件设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要修改 /// 使用代码编辑器修改此方法的内容 /// </summary> private void InitializeComponent() { components = new System.ComponentModel.Container(); } #endregion } }
故障解决方案
该故障与Visual Studio本身安装状态无关,按以下步骤排查即可解决:
- 检查项目生成架构配置:右键类库项目→属性→生成,取消勾选「首选32位」选项,将整个解决方案重新生成后再尝试打开设计器。
- 清空VS设计器缓存:关闭所有VS窗口,删除路径
C:\Users\你的系统用户名\AppData\Local\Microsoft\VisualStudio\16.0_xxxx\ComponentModelCache下的全部文件,重启VS后重新生成项目。 - 调整控件基类:当前代码中CustomControl1继承自原生
Control类,WinForms设计器对纯Control基类的支持存在兼容问题,将继承对象改为UserControl后重新生成即可正常加载设计器。 - 修正命名一致性:当前文件名拼写为CustomContol1,比类名CustomControl1少了字母r,文件名与类名不匹配会导致设计器找不到对应类加载失败,将文件名与类名修改为一致即可。
内容的提问来源于stack exchange,提问作者D.Man
相关产品推荐
相关产品推荐

