将自定义属性添加到标准控件

时间:2011-02-15 16:04:08

标签: .net winforms controls

有点懒,我想将一些属性添加到控件中,没有创建自定义控件的麻烦。

假设有一个Button控件,我想为它添加一个辅助Tag属性。

或文本框我想要一个oldText属性......

我不需要在属性窗口中显示添加的属性。我只需要在代码中使用它们。

有什么想法吗?

如果告诉我我必须使用自定义控件或派生类,请不要回答。我需要从工具栏中轻松使用标准控件。

另一方面,像Partial Class这样的东西会......

3 个答案:

答案 0 :(得分:3)

对于WPF

从按钮扩展并添加所需的dependency properties。您不必从头开始创建自定义用户控件。

您也可以使用attached properties添加其他功能而不使用继承。

适用于winforms

我的winforms有点生疏,但我注意到你也可以simply extend from Button

答案 1 :(得分:2)

如果您不想扩展该类,并且只想引用代码中的“属性”,则可以考虑构建Dictionary<T, V>,其中T是控件的类型,{ {1}}是您希望映射到控件的类型。它可以是字符串或自定义类型,在想要将多个属性映射到同一控件的情况下。

也许你有

V

您的代码中可以有class CustomPropertyBag { public string OldText { get; set; } public string Tag { get; set; } // more } ,这样您就可以将自定义属性和文本框映射到一起。

Dictionary<TextBox, CustomPropertyBag> dictionary

答案 2 :(得分:1)

我认为你最好的答案是我认为你不允许我们给出的答案 - 也就是说,使用继承来创建一个继承的控件。

但是,您可以使用IExtenderProvider实施方法进行解决。

相关问题