Visual Studio中的错误,还是一个坏主意?

Mat*_*ley 0 .net winforms

我做了一个自定义控件,它基本上是一个TextBox允许输入的多线,以及报告一些信息的一些其他控件.现在,我想允许我的控件的用户更改其中的字体TextBox,并想到以下几点:"好吧,用户不应该能够更改其他控件的字体,所以我将链接它通过Font控件上的属性",最终得到以下代码:

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

(是的,我控制的匈牙利符号......旧的VB习惯很难......)

现在,这看起来很好,除了当我构建我的项目并返回到我的表单以查看效果时,Visual Studio崩溃了.并且在重新启动项目时可靠地崩溃了...我在记事本中打开了类并将其更改为其他名称,删除了输出文件夹并打开了Visual Studio,重建了,现在一切正常.

我的问题是:我的想法中是否存在一些不合理的设计缺陷,或者这纯粹是一个VS错误?

Ed *_* S. 8

Font是环境属性.这意味着,如果未设置,控件将查看父级的属性以获取其值.所以,你有一个递归函数,因为父的Font属性看着孩子的,我们走了.

Windows窗体控件使用环境属性,因此子窗口控件可以像周围环境一样显示.在此上下文中,"环境"表示默认情况下从父控件检索该属性.如果控件没有父级并且未设置该属性,则控件尝试通过Site属性确定ambient属性的值.

如果控件未定位,如果站点不支持环境属性,或者未在AmbientProperties对象上设置该属性,则控件将使用其自己的默认值.通常,环境属性表示传递给子控件的控件(例如BackColor)的特征.例如,默认情况下,按钮将具有与其父窗体相同的BackColor.

顺便说一句,不要心疼; 我问了一次完全相同的问题:-)