我有一个用户控件,里面有一些WinForm控件。我希望能够自己绘制这些内部控件(出于滚动目的,其中一些将保留,其他将移动)。
即使我覆盖了OnPaint和OnPaintBackground方法,这些控件仍会显示在我的usercontrol上,因为它上面没有绘制方法,所以它现在完全是黑色的。
有没有办法可以抑制这些控件的绘制,然后使用每个控件的DrawToBitmap方法自己绘制它们?
答案 0 :(得分:1)
是。从UserControl的子控件集中删除它们(或者更好的是,永远不要添加它们)。然而,模拟与控件的交互将成为PITA。
你是否只需要控件“看起来”就像他们在那里一样。或者他们需要真的在那里吗?如果是后者,那么只需手动重新定位控件就可以更好地伪造滚动。
尝试重新发明窗口系统是一项痛苦的练习。如果你在范式内学习和工作,你会更好。
答案 1 :(得分:1)
如果您不需要互动,只需设置每个子控件.Visible = false。
否则,你试过WM_SETREDRAW吗?