创建“虚拟”ScrollableControl?

时间:2009-08-20 02:05:54

标签: c# winforms scroll

我正在创建自己的非常基本的网格控件。我决定从ScrollableControl派生(这是DataGridView似乎做的)并从那里开始。

我有很多代码来绘制我的单元格,但是我很难弄清楚如何利用ScrollableControl的“可滚动”部分。似乎ScrollableControl被设计为其他控件的容器,它的“自动”滚动功能是围绕控件范围之外的子控件。

我只是想设置控件的“虚拟”区域,以便获得正确大小的滚动条,然后我将自己的绘图放入控件中以创建自己的“视图”。

我基本上对此感到非常沮丧。什么是最简单的方法来实现这个目标?

4 个答案:

答案 0 :(得分:10)

您必须设置AutoScrollMinSize property以告诉控件您要渲染的区域。

答案 1 :(得分:1)

据我所知,你需要让一些的ScrollableControl子项位于虚拟表面的右下角。也许具有1像素透明图像的PictureBox可以。

仅供您参考SourceGrid,或者作为设计灵感(它充分利用MVC模式),或者它可能会解决您的问题而且您不想自己动手。< / p> 编辑:Doh!我很确定迈克尔的解决方案是正确/更好的。但是,您可能仍希望查看SourceGrid。

答案 2 :(得分:0)

您可以将其转储到带有滚动条的面板中:)

答案 3 :(得分:-2)

不要翻转,您正在寻求的定制级别在WPF中更合适且面向未来。如果对您的应用程序进行叉车操作是不可能的,那么可以构建您的控件并在WinForms中托管它。