0

在我们的应用程序中,行的所有单元格都是用户控件,它们在绘制时被初始化

如果您滚动多次或最大化/最小化,它会尝试重绘单元格、逐行并处理计数偷看和应用程序崩溃。

这里的问题:当我滚动一点时,对于每一行,它都会调用 onpaint() 但是现在移出视图的行(在最大化窗口中只有 20 行可见)如何处理它们?

UI 构造函数调用一次,当您加载但之后仅触发绘制。

考虑将每个单元格作为用户控件的 Grid。如果我最大化/最小化窗口或滚动网格,每个控件都会重新启动,导致句柄泄漏,尽管 GDI 计数保持稳定。

4

1 回答 1

2

OnPaint通常被调用很多次,并且不受您的控制。因此,在内部创建控件OnPaint不是一个好主意。(在你的情况下,在同一个地方必须有很多相同的控件,我猜)

使用窗体的构造函数、Form.Load事件或任何用户驱动的事件(单击按钮、菜单、工具栏等)来创建控件。

于 2013-08-12T05:35:14.520 回答