Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我们的应用程序中,行的所有单元格都是用户控件,它们在绘制时被初始化
如果您滚动多次或最大化/最小化,它会尝试重绘单元格、逐行并处理计数偷看和应用程序崩溃。
这里的问题:当我滚动一点时,对于每一行,它都会调用 onpaint() 但是现在移出视图的行(在最大化窗口中只有 20 行可见)如何处理它们?
UI 构造函数调用一次,当您加载但之后仅触发绘制。
考虑将每个单元格作为用户控件的 Grid。如果我最大化/最小化窗口或滚动网格,每个控件都会重新启动,导致句柄泄漏,尽管 GDI 计数保持稳定。
OnPaint通常被调用很多次,并且不受您的控制。因此,在内部创建控件OnPaint不是一个好主意。(在你的情况下,在同一个地方必须有很多相同的控件,我猜)
OnPaint
使用窗体的构造函数、Form.Load事件或任何用户驱动的事件(单击按钮、菜单、工具栏等)来创建控件。
Form.Load