下面的範例是如何設定 protected 的Control.DoubleBuffered屬性為True,這是一個經常需要去特別修改的屬性,這樣一來就可以避免重繪控制項時造成的螢幕閃爍.
所有的控制項都有DoubleBuffered屬性,但是此屬性是被[protected]保護起來,底下這個Function,利用了Reflection來存取 non-public 的methods 以及properties,如此一來就可以輕易的修改DoubleBuffered屬性...
範例程式:
// set instance non-public pr operty with name "DoubleBuffered" to true typeof
public static void SetDoubleBuffered(Control control)
{
typeof(Control).InvokeMember("DoubleBuffered",
BindingFlags.SetProperty |BindingFlags.Instance | BindingFlags.NonPublic,
null, control, new object[] { true } );
}
沒有留言:
張貼留言