我想知道我是否应该自己编写以下内容或使用第三方组件。如果有第三方组件符合条件而没有太多行李,我会很感激建议。
我想要一个像单元格矩阵的组件,就像网格控件一样。我不需要编辑,没有选择,没有动态调整列的大小,没有默认的单元格绘制行为,当鼠标移动到事物上时没有效果,没有键盘快捷键。
我所需要做的就是自己绘制每个单元格,如果网格的大小超过父组件的可用空间,则应显示滚动条。
换句话说,我希望能够说: grid.Invalidate()
然后我得到每个可见单元格的回调:
void DrawCell(int x,int y,Graphics g,Rectangle cellDrawingRect)
答案 0 :(得分:2)
我的建议?计算网格的大小,制作一个大小的图像,绘制网格,并将图像放在PictureBox中,并将该PictureBox放在ScrollableControl中。
您不需要乱用Control.Paint,因为图片框会为您处理。
如果您如此倾向,可以将所有这些放在UserControl中。这使您的代码更具可重用性和可移植性。
答案 1 :(得分:0)
如果您只编写自己的控件(从ScrollableControl派生),这似乎很简单。处理Control.Paint以绘制单元格并使用HorizontalScroll和VerticalScroll属性来调整滚动条。
答案 2 :(得分:0)
以下是我对此问题的早期咆哮:
Need help creating control to display data
我肯定会建议你自己这样做,特别是因为它本质上是一个只读控件。大多数现成的网格组件都是为了比你需要的更多而构建的,并且将它们摔成你需要的形状可能比从头开始编写自己更容易。
正如Charlie Salts所提到的,在一个大型PictureBox上绘制整个东西然后在较小的Panel上移动它可能会更容易,但这取决于整个网格的大小。位图可能占用大量内存。