【问题标题】:Is there a way to allow a property of a user control to be modified only during design time?有没有办法只在设计时修改用户控件的属性?
【发布时间】:2010-03-16 16:07:52
【问题描述】:

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

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

这可能吗?

* 当我将DesignOnly 属性添加到一个属性时,我从设计模式中为该属性选择的值似乎并没有保持不变;该属性最终只是我在代码中默认设置的任何内容。

【问题讨论】:

    标签: .net winforms windows-forms-designer


    【解决方案1】:

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

    【讨论】:

    • 我想这确实是最有意义的。
    • @Dan:使用控件的 DesignMode 属性也很有意义。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      运行时和设计时之间没有“真正的”区别。如果您想了解我在说什么,请尝试在您的某个属性中添加 NotImplementedException 并尝试在设计器中进行设置。

      【讨论】:

        猜你喜欢
        • 2010-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-15
        • 2012-08-17
        相关资源
        最近更新 更多