Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创造;虚拟的;滚动控件?_C#_Winforms_Scroll - Fatal编程技术网

C# 创造;虚拟的;滚动控件?

C# 创造;虚拟的;滚动控件?,c#,winforms,scroll,C#,Winforms,Scroll,我正在创建自己的非常基本的网格控件。我决定从ScrollableControl派生(DataGridView似乎就是这么做的)并从那里开始 我有很多代码来绘制我的单元格,但是我很难弄清楚如何利用ScrollableControl的“可滚动”部分。ScrollableControl似乎被设计成其他控件的容器,它的“自动”滚动功能是围绕控件边界之外的子控件进行的 我只是想设置控件的“虚拟”区域,以便获得正确大小的滚动条,然后在控件中绘制自己的图形以创建自己的“视图” 我基本上对此感到非常沮丧。最简单

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

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

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


我基本上对此感到非常沮丧。最简单的方法是什么?

据我所知,您需要将ScrollableControl的一些子项放置在虚拟曲面的右下边界。也许一个带有1像素透明图像的PictureBox就可以了

仅供参考,您可能希望将其视为设计灵感(它很好地利用了MVC模式),或者它将解决您的问题,而您不想自己动手


编辑:Doh!我很肯定迈克尔的解决方案是正确的/更好的。但是,您可能仍然希望查看SourceGrid。

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

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

不要翻转,您所寻求的自定义级别在WPF中更为合适,并且是未来的证明。如果你的应用不可能升级,那么你可以构建你的控件并在WinForms中托管它

我现在明白了。哇,这太不直观了。MinSize实际上是它的最大尺寸。。。或者更确切地说是虚拟区域的大小……关于命名,我非常同意。你肯定猜不到它的名字就是这样的。谢谢,这一个节省了我很多时间。两个问题。我的代码必须在Windows 2000上运行,WPF不能在Win2k上运行,我现在没有时间学习WPF。