所有者绘制网格 - .NET

时间:2009-09-27 03:00:18

标签: .net grid drawing components

我想知道我是否应该自己编写以下内容或使用第三方组件。如果有第三方组件符合条件而没有太多行李,我会很感激建议。

我想要一个像单元格矩阵的组件,就像网格控件一样。我不需要编辑,没有选择,没有动态调整列的大小,没有默认的单元格绘制行为,当鼠标移动到事物上时没有效果,没有键盘快捷键。

我所需要做的就是自己绘制每个单元格,如果网格的大小超过父组件的可用空间,则应显示滚动条。

换句话说,我希望能够说: grid.Invalidate()

然后我得到每个可见单元格的回调:

void DrawCell(int x,int y,Graphics g,Rectangle cellDrawingRect)

3 个答案:

答案 0 :(得分:2)

我的建议?计算网格的大小,制作一个大小的图像,绘制网格,并将图像放在PictureBox中,并将该PictureBox放在ScrollableControl中。

您不需要乱用Control.Paint,因为图片框会为您处理。

如果您如此倾向,可以将所有这些放在UserControl中。这使您的代码更具可重用性和可移植性。

答案 1 :(得分:0)

如果您只编写自己的控件(从ScrollableControl派生),这似乎很简单。处理Control.Paint以绘制单元格并使用Horizo​​ntalScroll和VerticalScroll属性来调整滚动条。

答案 2 :(得分:0)

以下是我对此问题的早期咆哮:

Need help creating control to display data

我肯定会建议你自己这样做,特别是因为它本质上是一个只读控件。大多数现成的网格组件都是为了比你需要的更多而构建的,并且将它们摔成你需要的形状可能比从头开始编写自己更容易。

正如Charlie Salts所提到的,在一个大型PictureBox上绘制整个东西然后在较小的Panel上移动它可能会更容易,但这取决于整个网格的大小。位图可能占用大量内存。