有点懒,我想将一些属性添加到控件中,没有创建自定义控件的麻烦。
假设有一个Button控件,我想为它添加一个辅助Tag属性。
或文本框我想要一个oldText属性......
我不需要在属性窗口中显示添加的属性。我只需要在代码中使用它们。
有什么想法吗?
如果告诉我我必须使用自定义控件或派生类,请不要回答。我需要从工具栏中轻松使用标准控件。
另一方面,像Partial Class这样的东西会......
答案 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
实施方法进行解决。