2016-04-17 158 views
-1

我試圖在面板上繪圖時避免閃爍。 我已經發現一個好的解決方案首先從面板類派生類嘗試從C#中的類Panel導出類時出現錯誤

public class DoubleBufferedPanel : Panel 
{ 
    public DoubleBufferedPanel() 
    { 
     this.SetStyle(ControlStyles.AllPaintingInWmPaint | 
      ControlStyles.OptimizedDoubleBuffer | 
      ControlStyles.UserPaint, true); 
    } 
} 

然後用DoubleBufferedPanel代替(這是naturall)System.Windows.Forms.Panel在Designer.cs類。 它適用於我,但由於以下錯誤無法轉到Form1 [設計]: 服務容器中已經存在服務System.Windows.Forms.Design.ISelectionUIService。參數名稱:serviceType

即使我只是複製 - 將DoubleBufferedPanel類粘貼到具有DoubleBufferedPanel的Form1.cs System.Windows.Forms.Panel時,該錯誤也會出現。

有什麼辦法可以避免這樣的錯誤嗎?我可以處理它,因爲我的程序在運行時完美運行,但我無法訪問Form1 [Design]。

+0

也許在這種方式下直接修改Designer.cs有一些問題。您可以嘗試以更標準的方式創建控件https://msdn.microsoft.com/en-us/library/5h0k2e6x(v=vs.100).aspx,然後將其從工具箱http添加到設計器中://stackoverflow.com/questions/3446429/how-to-put-a-usercontrol-into-visual-studio-toolbox –

回答

0

我找到了一個解決方案,但它很奇怪。 我在我的項目中創建了一個新的類DoubleBufferedPanel.cs作爲單獨的文件並複製粘貼的代碼。 現在它工作沒有問題。 主題可以關閉,但我仍然不知道剛纔發生了什麼。

謝謝!

相關問題