自定义控件不会在Designer中公开图像属性

时间:2011-05-10 07:13:32

标签: c# winforms properties custom-controls designer

我制作了一个自定义轨迹栏控件,主要是作为练习。我知道我可以/应该继承我所需要的而不是重新发明轮子,但我在努力中学到了很多东西。 现在,我有很多属性,除了几个图像属性之外,它们都出现在设计器中。这就是我所拥有的,模仿其他工作属性(那些是整数和颜色,什么不是,它们都按预期工作......),所以也许我应该以其他方式做图像。最重要的是,我不知道我在做什么:)

编辑:我的自定义控件位于Windows窗体解决方案(VC#2008 Express)中,为了澄清,我的问题是我的某些控件的属性(图像属性)没有显示在设计时的属性选项卡中。

编辑2:在读完DependencyProperty并完全无法理解这个概念之后(我在programmin teh codez上非常noob或者你的大师称之为黑色伏都教魔法?)。我已经习惯让IDE解决所有麻烦,我很高兴看到IDE愉快地展示了我的其他属性,例如Color BarColorint Value等等。为什么会{{1}任何不同,很多标准控件都有图像属性,也许我认为IDE可以解决我的所有错误是天真的,但是确实微软的人每次不得不构建一个新的编辑器。在其控件中设置图像属性。我敢打赌,他们重用了一些东西,我也应该这样做。

我被困住了:(

无论如何,这是我糟糕的CoD3Z:

Image LeftImage

顺便说一句,DefaultValue和DefaultValueAttribute之间有什么区别?

感谢您的任何指示和帮助! /的Mikael

3 个答案:

答案 0 :(得分:1)

我在这里找到了一些东西: http://msdn.microsoft.com/en-us/library/system.drawing.design.imageeditor.aspx

考虑这个解决了。

答案 1 :(得分:0)

要在Designer中显示图像,您需要覆盖绘制它的OnPaint方法。

DefaultValue与DefaultValueAttribute相同。 .NET中的所有属性都是从System.Attribute继承的clases,所有这些类都是Name * Attribute *,其中Attribute是固定的。然后“DefaultValue”就像一个Alias。

答案 2 :(得分:0)

您的示例未显示您的问题究竟是什么,但如果您创建自定义控件并想要从设计器访问其属性,则应使用类似的smth:

        public static readonly DependencyProperty ValueProperty =
        DependencyProperty.Register("Value", typeof(object), typeof(CustomControl),
        new FrameworkPropertyMetadata(null, ValueChanged));

希望这可以帮助你