2009-10-20 81 views
0

我有一個用戶控件,裏面有一些WinForm控件。我希望能夠自己繪製這些內部控件(爲了滾動目的,其中一些將保留,另一些將移動)。停止控件被繪製

即使我重寫了OnPaint和OnPaintBackground方法,這些控件仍然顯示在我的usercontrol上,因爲它上面沒有繪畫方法,所以它現在完全是黑色的。

有沒有一種方法可以抑制這些控件被繪製,然後用每個控件的DrawToBitmap方法自己繪製它們?

回答

1

是的。將其從(或更好的是,從不將它們添加到)UserControl的子控件集中刪除它們。但是,模擬與控件的交互將成爲PITA。

你是否需要控件來「看」他們就在那裏。或者他們需要真正在那裏?如果是後者,只需通過手動重新定位控件就可以更好地完成滾動。

試圖重新發明窗口系統是一個痛苦的練習。如果你在範式內學習和工作,你會更好。

+0

耶是痛苦的,我還沒有發現任何真正有用的在線。我想看看DatagridView的實現。我的意思是它支持Custom Controls Painting .. – jmayor 2009-10-20 17:00:58

1

如果你不需要交互,只需設置每個子控件.Visible = false。

否則,你試過WM_SETREDRAW