Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Visual Studio中的Bug,还是一个坏主意?_.net_Winforms - Fatal编程技术网

.net Visual Studio中的Bug,还是一个坏主意?

.net Visual Studio中的Bug,还是一个坏主意?,.net,winforms,.net,Winforms,我制作了一个自定义控件,它基本上是一个允许输入的多行TextBox,还有一些其他控件报告一些信息。现在,我想让我的控件的用户更改文本框中的字体,并按照这样的思路思考:“好吧,用户不应该更改其他控件的字体,所以我将通过控件上的font属性将其链接起来”,因此得到以下代码: public override Font Font { get { return txtEntry.Font; } set { txtEntry.Font = value; } } (是的,我的控件上有匈牙利符

我制作了一个自定义控件,它基本上是一个允许输入的多行
TextBox
,还有一些其他控件报告一些信息。现在,我想让我的控件的用户更改
文本框中的字体
,并按照这样的思路思考:“好吧,用户不应该更改其他控件的字体,所以我将通过控件上的
font
属性将其链接起来”,因此得到以下代码:

public override Font Font {
    get { return txtEntry.Font; }
    set { txtEntry.Font = value; }
}
(是的,我的控件上有匈牙利符号……旧的VB习惯很难改变……)

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


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

字体是环境属性。这意味着,如果未设置,控件将查看父属性以获取其值。因此,您有一个递归函数,因为父项的字体属性查看子项的字体属性,然后我们开始

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

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


顺便说一句,不要难过;我曾经问过完全相同的问题:-)

即Visual Studio因堆栈溢出而崩溃。。。我想是有道理的。是的,会的。有时,当我在“getter”中返回属性本身时,我会遇到这种情况,使其递归。打开设计师的门,责备他!,虽然我想说如果IDE没有因为它而崩溃那就太好了。提醒vb6调试器,以及如果您的程序执行调试器,它将如何经常崩溃。有用。控制名称用匈牙利语没什么错,伊姆霍。这比我的同事莫名其妙地做的事情要好,那就是在所有控件名称前加下划线(例如txtEntry、btnOK等)。我通常为私有成员使用uu前缀。。。由于控件通常是私有的,我想扩展是有意义的。它有意义,但没有其他人这样做,而且在实践中它比无用更糟糕。现在,我不只是键入“t”并在Intellisense中将所有文本框很好地排列起来,而是必须键入“shift-下划线-t”才能得到相同的结果。如果我把其他任何东西命名为“\u t…”(比如“\u事务”),我会在“\u txt”之前得到它。