自定义控件导致Visual Studio 2008到CRASH

DxC*_*xCK 5 .net c# crash custom-controls winforms

以下代码是自定义控件.在Visual Studio设计器中使用此控件会导致Visual Studio崩溃,而没有任何明显的细节.

我正在使用Visual Studio 2008.

我在这里做错了吗?

using System;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace InstalacionesSayma.GUI
{
    public class CustomControlTest : Panel
    {
        private Label _label;

        public CustomControlTest()
        {
            _label = new Label();
            this.Controls.Add(_label);
        }

        public override Font Font
        {
            get
            {
                return _label.Font;
            }
            set
            {
                _label.Font = value;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

mse*_*ant 5

崩溃的发生是因为您在Font行为中拥有的内容.您将覆盖面板的Font属性的预期行为.将字体代码更改为以下内容会导致崩溃消失:

 public override Font Font
  {
     get
     {
        return base.Font;
     }
     set
     {
        base.Font = value;
        _label.Font = value;
     }
  }
Run Code Online (Sandbox Code Playgroud)


Han*_*ant 2

当设计期间出现异常时,VS2005 会崩溃到桌面。这不可能是由您发布的代码引起的。我怀疑我们正在查看真正的代码,这个控件没有做任何事情。

请小心构造函数和事件处理程序,它们也会运行设计时间。如果您执行任何严重依赖于程序状态的操作,例如尝试打开文件或与数据库服务器通信等,请通过检查 this.DesignMode 属性来避免运行此类代码。