【问题标题】:Stop controls from being painted停止绘制控件
【发布时间】:2009-10-20 15:12:04
【问题描述】:

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

即使我重写了 OnPaint 和 OnPaintBackground 方法,这些控件仍会继续显示在我的用户控件上,现在完全是黑色的,因为上面没有绘画方法。

有没有一种方法可以禁止绘制这些控件,然后使用每个控件的 DrawToBitmap 方法自行绘制它们?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    是的。从 UserControl 的一组子控件中删除它们(或者更好的是,永远不要将它们添加到)。不过,模拟与控件的交互将是一个 PITA。

    您是否只需要控件“看起来”就像它们在那里一样。或者他们真的需要在那里吗?如果是后者,您最好通过手动重新定位控件来以某种方式伪造滚动。

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

    【讨论】:

    • 是的,很痛苦,我还没有在网上找到任何真正有用的东西。我想看看 DatagridView 的实现。我的意思是它支持自定义控件绘画..
    【解决方案2】:

    如果不需要交互,只需将每个子控件设置为.Visible = false即可。

    要不然你试过WM_SETREDRAW吗?

    【讨论】:

      猜你喜欢
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 2014-05-10
      • 2013-09-13
      • 2013-05-07
      • 2018-03-05
      相关资源
      最近更新 更多