停止控制被绘制

时间:2009-10-20 15:12:04

标签: c# winforms

我有一个用户控件,里面有一些WinForm控件。我希望能够自己绘制这些内部控件(出于滚动目的,其中一些将保留,其他将移动)。

即使我覆盖了OnPaint和OnPaintBackground方法,这些控件仍会显示在我的usercontrol上,因为它上面没有绘制方法,所以它现在完全是黑色的。

有没有办法可以抑制这些控件的绘制,然后使用每个控件的DrawToBitmap方法自己绘制它们?

2 个答案:

答案 0 :(得分:1)

是。从UserControl的子控件集中删除它们(或者更好的是,永远不要添加它们)。然而,模拟与控件的交互将成为PITA。

你是否只需要控件“看起来”就像他们在那里一样。或者他们需要真的在那里吗?如果是后者,那么只需手动重新定位控件就可以更好地伪造滚动。

尝试重新发明窗口系统是一项痛苦的练习。如果你在范式内学习和工作,你会更好。

答案 1 :(得分:1)

如果您不需要互动,只需设置每个子控件.Visible = false。

否则,你试过WM_SETREDRAW吗?