有没有办法在c#中向Controls添加自定义变量?

时间:2015-07-18 14:40:45

标签: c# variables controls overloading

我有多个RichTextBox,我想在它们上面存储一个布尔值,所以我可以为它们中的每一个访问它。有什么办法吗?

我尝试使用扩展方法,就像我为AppendText提供更多重载一样,但我没有运气。

3 个答案:

答案 0 :(得分:0)

您可以添加所需的任何属性。如果您需要能够在设计时更改它(从属性编辑器),您只需要使用Browsable属性进行装饰。

其他可能有用的属性:

CategoryAttribute - 此属性表示您的属性网格属于您的属性。

DescriptionAttribute - 此属性为您的属性添加一个描述,该描述将作为属性网格底部的文本描述。

但是如果你不能修改现有的控件,你必须使用继承(在你的情况下从RichTextBox继承)。如果该类是密封的,那么我将创建另一个装饰当前的控件(装饰器模式)并在其上添加一个新属性。

答案 1 :(得分:0)

您可以使用标记属性。它在Control上的定义适用于所有控件,包括RichTextBox MSDN

答案 2 :(得分:0)

快速简单的解决方案(可能不那么优雅),但为了简单起见,您可以使用@Html.HiddenFor(x=>x.MyField1Bool).创建隐藏字段,即如果您要回发到服务器。您当然需要为ViewModel创建额外的布尔字段。

另外,以防您计划使用javascript访问这些布尔值。您应该查看数据属性,例如:

<input type="text" data-flag="true"/>

这些在javascript中很容易访问。在Razor语法中,您只需将它们添加为属性。