Winform自定义控件:在设计模式下,DesignMode不返回true

use*_*291 20 c# winforms

我在这里了解了DesignMode 如何在更改属性后在设计时刷新winform自定义控件

但是当我在我的自定义控件的构造函数中使用它时,它永远不会返回true,因此当我拖放我的自定义控件时,它总是显示max = 200,那么什么是错的?

if (this.DesignMode)
{                
    this.Min = 0;
    this.Max = 100;
} 
else 
{
    this.Min = 0;
    this.Max = 200;            
}

this.LabMin.Text = this.Min.ToString();
this.LabMax.Text = this.Max.ToString();  
Run Code Online (Sandbox Code Playgroud)

Eri*_*ric 38

LicenseManager.UsageMode 是为了这个.

事实上,这是检测控件是否处于设计模式的唯一可靠方法.它仅在构造函数期间有效,但它可以很容易地存储在类的字段中以供以后参考.

DesignMode即使容器控件处于设计模式,嵌套控件的属性也将为false.

  • 感谢您的建议,我会尝试,但这是非常丑陋的微软我非常沮丧,给出一个名称不做它的名称打算是一个耻辱. (4认同)

Iai*_*ard 5

可能是该控件还必须ISite与之关联,否则它将始终返回false

设计模式指示符存储在ISite中;因此,如果Component没有关联的ISite,则此属性的值为false。

资料来源:MSDN

编辑:也看到这篇文章,因为有人遇到与您面临的问题类似的问题

Windows窗体设计器和DesignMode属性问题

编辑2:我还发现了一个站点,似乎表明这是自定义控件的常见问题,但它也列出了一些解决方法。你可以在这里找到它:

自定义控件设计模式问题