我正在实现一个自定义TextBox,并希望它的新编码属性可以在设计器中编辑。
以下是该财产的声明:
private Encoding tbEnc;
public Encoding tbEncoding { get { return tbEnc; } set { tbEnc = value; } }
它在属性网格中显示正常但已禁用。我希望它可以开箱即用,因为Encoding是一种标准类型,比如Font,标准编辑器出现了。
我是否必须构建一个UITypeEditor以及最简单的实现?
答案 0 :(得分:2)
属性上的禁用状态意味着NET无法找到Type的匹配项,即System.Text.Encoding
。由于还有其他属性,你可能不想显示(就像所有Isxxxxxxx
道具一样),股票/默认编辑器可能不会做你想要的。
一种方法是使用TypeConverter但是对于类似的东西,只是将属性暴露为枚举可能是一个优势:
class newTB : TextBox
{
// encoding subset to implement
public enum NewTBEncoding
{
ASCII, UTF8, UTF7
};
// prop as enum
private NewTBEncoding tbEnc;
public NewTBEncoding tbEncoding {
get { return tbEnc; }
set {tbEnc = value; }
}
}
您有时必须从枚举值转换为实际的基础类型,但这通常是您可以在属性设置器中执行的一次性操作,或者只是在使用时。结果: