有需求或技術問題可以隨時跟我連絡 (MSN上線時)

2009年8月26日 星期三

設定 DoubleBuffered 屬性(Property)

下面的範例是如何設定 protected 的Control.Double­Buffered屬性為True,這是一個經常需要去特別修改的屬性,這樣一來就可以避免重繪控制項時造成的螢幕閃爍.

所有的控制項都有Double­Buffered屬性,但是此屬性是被[protected]保護起來,底下這個Function,利用了Reflection來存取 non-public 的methods 以及properties,如此一來就可以輕易的修改Double­Buffered屬性...

範例程式:

// 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 } );
}



沒有留言:

張貼留言