有没有办法只允许在设计时修改用户控件的属性?

时间:2010-03-16 16:07:53

标签: .net winforms windows-forms-designer

我查看了DesignOnly属性,但这似乎没有达到我想要的效果*。

基本上,我正在寻找某种方式来指示用户控件的某些属性(比如Text)可以在设计时修改 - 即,从VS中的Windows窗体设计器(或者可能是从任何可用于修改Windows窗体GUI的GUI设计器 - 但在运行时。应用程序运行后,该属性应该有效readonly

这可能吗?

* 当我将DesignOnly属性添加到属性时,我从设计模式为该属性选择的值似乎不会粘;该属性最终是我在代码中默认设置的任何内容。

3 个答案:

答案 0 :(得分:1)

你可以在你的应用程序中放置一个公共静态变量,你可以在main() - 方法中设置为true。 然后,您可以测试是否设置了变量。如果是这样,那么程序已经正常启动,否则我们显然是在设计师中运行。

答案 1 :(得分:0)

可能需要注意的是,设计时支持 运行时支持。您的对象正在IDE中在后台旋转。 Designer支持只是一堆IDE元数据,允许Visual Studio(或其他一些设计师)构建对象的图形表示。

运行时和设计时之间没有“真正的”差异。如果你想看看我在说什么,试着在你的一个属性中抛出NotImplementedException并尝试在设计器中设置它。

答案 2 :(得分:0)

你不能这样做 - VS表单设计器生成的代码在运行时就像任何其他代码一样运行;所以你无法区分VS表单代码和用户代码。看一下InitializeComponent方法 - 在创建表单时,它就像任何其他代码一样运行。