2011-04-18 61 views
0

我有一個類接受Control並將生成的圖像繪製到它。在我的應用程序代碼中,我爲此使用了Panel控件 - 這看起來工作得很好,除了在圖像重繪時控件閃爍很多。我認爲解決方案是在控件上啓用雙緩衝。我用下面的代碼這樣做:雙緩衝控制導致出現灰色

System.Reflection.PropertyInfo aProp = 
       typeof(System.Windows.Forms.Control).GetProperty(
        "DoubleBuffered", 
        System.Reflection.BindingFlags.NonPublic | 
        System.Reflection.BindingFlags.Instance); 

      aProp.SetValue(drawControl, true, null); 

添加此代碼後,繪製圖像,然後immeadiately用默認的灰色按鈕的背景顏色更換 - 這是因爲如果該系統是借鑑了我自己的內容。

我記得在某處看到一個屬性,告訴系統永遠不會繪製控件(這對我來說是完美的,因爲我用內容填充整個控件),但是現在我找不到它了。有沒有這樣的財產,如果是這樣,我該如何啓用它?

我使用.NET框架版本4.0的C#。

回答

1

嘗試將控件上的FlatStyle設置爲FlatStyle.Standard(如果它當前設置爲FlatStyle.System)。

(設置雙反射反射看起來太可怕了,但也許你需要這樣做,出於某種原因)

+0

謝謝!我不知道爲什麼這有效,但它確實。乾杯! – Thomi 2011-04-18 21:00:02

+0

當它被設置爲'系統'時,整個控制畫的負載被交給操作系統,並且Winforms不會涉及到。設計器屬性(如背景顏色)不適用於FlatStyle.System。 – 2011-04-18 21:01:31