2

我有一个使用一些属性制作的 GaugeScale 类。此类包含在 GDI+ 绘制的仪表周围显示完整比例的必要信息。

我有一个 Gauge 控件,它使用 GaugeDrawer 来渲染它的框架。

GaugeDrawer 是可以像常规组件一样在设计器时使用的组件

框架可以由 CircularGaugeDrawer(制作精美的汽车 RPM 仪表)或 ThermometerDrawer 渲染......

无论如何,两者都使用具有一些复杂属性(GaugeScaleInterval[] 和 float)的 GaugeScale,我想知道是否有办法让 Visual Studio 的设计器实例化和显示这些属性。它将使这种控制方式的创建对用户来说不那么复杂。

所以我想知道如何教设计师如何使用抽屉组件。如果 TypeConverter 是解决方案。如何让它们对 Visual Studio 的设计者有用

编辑:

这整个东西都是针对 WinForm 环境的。

4

1 回答 1

2

你还没有说出来,但我猜你正在使用 WinForms (system.windows.forms)。

在这个主题中,TypeConverters 通常将文本/字符串表示转换为/从可以分配给属性的具体对象。

请参阅文章http://msdn.microsoft.com/en-us/magazine/cc164145.aspx - 除了显示 int 和 enum 属性外,还有一个很好的介绍性教程如何编写自定义类Hand以及HandConverter如何公开窗体设计器的属性窗口中的 usch 类型的属性。

请注意,TypeConverter 可以在属性级别和广告级别注册。类级别最适合具有全球通用转换器的简单结构,例如自定义数字/颜色/等。更复杂的情况可能会在属性级别注册不同的类型转换器,从而相同类型“手”的三个属性可能使用不同的转换逻辑。

那是针对 TypeConverters 的。这不是唯一的选择。属性窗口比这更强大。例如,您肯定见过颜色选择器。除了 TypeConverters,您还可以注册 Editors 和 IIRC,甚至是整个设计师。初学者请参见此处:http: //msdn.microsoft.com/en-us/library/ms171840.aspx

旁注:
尽管在 WPF/XAML 爆发后 WinForms 似乎有点“死”,但旧框架及其设计时功能有时会让您感到惊讶。例如 - XAML 宣传称为“附加属性”的新功能 - 在这里也很容易实现它们。甚至核心本地化组件也使用该功能 :) 但是,这可能是一个非常无情的环境,并且很容易使 VisualStudio 不稳定。再加上一直很糟糕的 .Designer.cs 处理,表单代码的某些部分有时可能会意外消失。在与编辑一起玩之前,请进行备份。TypeConverters 更安全!

于 2012-08-23T15:46:43.950 回答