C 自定義控制項新增類似Size一樣的結構屬性

2021-08-02 18:24:17 字數 2135 閱讀 5060

廢話不多說,直接切入正題。

首先我們要把新增的結構屬性用類表示出來。

public class validdepend

set

}private bool ishighvalid = false;

public bool ishighvalid

set

}private string dependaddr = "m42";

public string dependaddr

set

}public validdepend(bool ifdepend, bool isonvalid, string dependaddr)

}

這個類有3個屬性,ifdepend為控制項是否需要其他的值有效;ishighvalid為依賴的值是否高有效;dependaddr為依賴的位址。如果此時在自定義控制項中加入此類作為屬性,當然是不能進行修改屬性值的。我們還需要將這個屬性進行類轉換。

再新建乙個對類進行轉換的類:

public class validdependconverter : typeconverter

public override bool canconvertfrom(itypedescriptorcontext context, type sourcetype)

public override bool canconvertto(itypedescriptorcontext context, type destinationtype)

public override object convertfrom(itypedescriptorcontext context, system.globalization.cultureinfo culture, object value)

);if (ps.length != 3) throw new argumentexception("failed to parse text");

return new validdepend(bool.parse(ps[0]), bool.parse(ps[1]), ps[2]);

}public override object convertto(itypedescriptorcontext context, system.globalization.cultureinfo culture, object value, type destinationtype)

);return new instancedescriptor(ctor, new object );

}return base.convertto(context, culture, value, destinationtype);

}public override object createinstance(itypedescriptorcontext context, system.collections.idictionary propertyvalues)

public override propertydescriptorcollection getproperties(itypedescriptorcontext context, object value, attribute attributes)

public override bool getcreateinstancesupported(itypedescriptorcontext context)

public override bool getpropertiessupported(itypedescriptorcontext context)

}

這個轉換類繼承了typeconverter,我們只是重寫了基類中的一些方法,以適合我們的結構屬性類validdepend。有了這個轉換類之後,我們就要將它應用於我們的結構屬性類上了:

[serializable]

[comvisible(true)]

[typeconverter(typeof(validdependconverter))]

public class validdepend

set

}......

}

大功告成!將自定義控制項重新生成一下,我們新建乙個自定義控制項,這時就能看到我們的結構屬性了,是不是跟size屬性一樣?

為C 自定義控制項新增自定義事件

大氣象 原文 為c 自定義控制項新增自定義事件 這裡的自定義控制項是由普通控制項組合而成的。希望事件響應 推遲到使用自定義控制項的窗體裡寫。步驟一 新建乙個使用者控制項,放兩個按鈕,tag分別是btn1,btn2.這兩個按鈕的共用單擊事件處理 如下 using system using system...

為C 自定義控制項新增自定義事件

大氣象 原文 為c 自定義控制項新增自定義事件 這裡的自定義控制項是由普通控制項組合而成的。希望事件響應 推遲到使用自定義控制項的窗體裡寫。步驟一 新建乙個使用者控制項,放兩個按鈕,tag分別是btn1,btn2.這兩個按鈕的共用單擊事件處理 如下 using system using system...

為C 自定義控制項新增自定義事件

大氣象 原文 為c 自定義控制項新增自定義事件 這裡的自定義控制項是由普通控制項組合而成的。希望事件響應 推遲到使用自定義控制項的窗體裡寫。步驟一 新建乙個使用者控制項,放兩個按鈕,tag分別是btn1,btn2.這兩個按鈕的共用單擊事件處理 如下 using system using system...