【问题标题】:Creating "virtual" ScrollableControl?创建“虚拟”ScrollableControl?
【发布时间】:2009-08-20 02:05:53
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# winforms scroll


    【解决方案1】:

    您必须设置AutoScrollMinSize property 来告诉控件您打算渲染哪个区域。

    【讨论】:

    • 我现在明白了。哇,这很不直观。 MinSize 实际上是它的最大尺寸......或者更确切地说是虚拟区域的尺寸......
    • 我完全同意这个命名。从名字上肯定不会猜到它的作用。
    • 谢谢,这个为我节省了很多时间。
    【解决方案2】:

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

    仅供参考,您可能想查看SourceGrid,作为设计灵感(它很好地利用了 MVC 模式),或者它可能会解决您的问题并且您不想自己动手。

    编辑:Doh!我很确定迈克尔的解决方案是正确/更好的。不过,您可能仍想看看 SourceGrid。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        不用说,您正在寻求的自定义级别在 WPF 中更加合适且面向未来。如果叉车您的应用程序是不可能的,则可以构建您的控件并将其托管在 WinForms 中。

        【讨论】:

        • 两个问题。我的代码必须在 Windows 2000 上运行,WPF 不能在 Win2k 上运行,我现在没有时间投入学习 WPF。
        猜你喜欢
        • 2014-08-23
        • 2019-05-10
        • 2018-11-29
        • 2021-07-30
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多