gpt4 book ai didi

c# - 在 C# Designer 中引用类常量?

转载 作者:行者123 更新时间:2023-11-30 17:47:07 25 4
gpt4 key购买 nike

我无法为当前正在进行的项目使用设计器。我们通常做的一件事是在我们添加的每个控件上设置尽可能多的属性。我们使用设计器的“属性”窗口执行此操作。这导致所有这些设置都在生成的 .designer.cs 文件中设置/管理,而不是我们必须用我们的代码维护它们。

有一件事我发现自己一直想做,但我永远不知道该怎么做,那就是从属性窗口中引用常量。

例如,在我正在使用的 SpinEdit 中,我想将最大值设置为 Decimal.MaxValue 但如果我只是在属性窗口,然后我得到一个错误。如何从设计器属性窗口引用此变量?

这是我正在尝试做的事情的图片,以防它更清楚:

Set property using constant

但是,一旦我尝试离开图片中突出显示的文本框的焦点,尝试这样做就会导致错误。但它在代码中工作正常,下面的行编译得很好,那么为什么我不能在设计器中这样做呢?:

alarmStationSpinEdit.Properties.MaxValue = Decimal.MaxValue;

SpinEdit 由 DevExpress 第 3 方库提供。我认为该组件并不重要。我认为同样的问题适用于属性窗口中的任何字段。

我期待两个可能的答案之一。它们将采用以下任一形式:

  1. 是的,这是可能的。这就是你如何做到的......

  1. 不,那是不可能的。这就是为什么......(最好有链接,因为我觉得这很难相信)。

最佳答案

1) 是的,如果您是组件开发人员,那是可能的。 Visual Studio 属性网格允许您为组件属性指定自定义值转换器。这提供了将属性网格中输入的字符串值转换为从常量读取的值的机会。

TypeConverterAttribute attribute 用于将自定义类型转换器分配给属性。这是一篇详细的 MSDN 文章,其中包含示例,解释了类型转换器是什么以及它的用途:Implement a Type Converter

2) 不,如果您使用的是第三方组件并且该组件不支持为其属性分配常量值,那是不可能的。

默认情况下,Visual Studio 属性网格按原样接受值。如果该属性是小数类型,则不能为其分配字符串。

您通过属性网格分配的值不会被评估为 C# 或 VB.NET 表达式。 Visual Studio 将其视为一个值。

关于c# - 在 C# Designer 中引用类常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25123287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com