【问题标题】:How to make row to auto resize如何使行自动调整大小
【发布时间】:2012-03-15 19:39:44
【问题描述】:

我想让我的行根据屏幕大小自动调整大小。 当我为列执行此操作时,它确实有效:

grid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;

但是当我想对行做同样的事情时。我没有填充选项。 我只有喜欢的

grid.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

如何根据屏幕大小让行填满屏幕?

【问题讨论】:

    标签: c# datagrid cells


    【解决方案1】:

    您可以使用AutoResizeRow 方法。

    每个 MSDN:

    如果您想控制行何时调整大小,此方法很有用。每次方法调用只调整一次行高;如果该行的内容稍后发生变化,该行将不会自动调整。要调整所有行的大小,请使用 AutoResizeRows 方法。要将行设置为在其内容更改时自动调整大小,请使用 AutoSizeRowsMo​​de 属性。

    还有一个 MSDN 示例here

    您可能需要查看名为 HeightRowTemplate 属性。您可以计算屏幕尺寸何时发生变化

    编辑:

    您可以将其放入调整大小事件中,例如Form_ResizeEnd。关于网格如何处理大量行的 YMMV。

    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        row.Height = 22; //your calculation based on the screen height
    }
    

    如果你想要主屏幕的高度,我相信你可以使用System.Windows.Form.Screens 类,特别是Screens.PrimaryScreen.Bounds.Height。由您决定要保持什么样的大小。

    【讨论】:

    • 感谢您的评论。但是我怎样才能把它组合成使用填充模式呢?所以它可以填满我的屏幕?
    • 对不起,我听不懂你的英语。也许您可以发布您想要做的屏幕截图?
    • 我对我的英语感到抱歉,但我写的很匆忙。所以我以全屏模式启动我的表单。我的数据网格被调整大小以适应表格。当我开始绘制我的数据网格时,我的宽度充满了完全适合我的屏幕的列(当我单击右侧的最后一列时,我不能超过我的屏幕大小),问题出在我的行上,当我启动它并单击我在屏幕上看到的最后一行时,我仍然可以使用箭头键向下移动。我不想那样做。我只是希望它适合我的专栏。
    • @denonth:那是因为有更多的数据(显然)超过了网格可以在屏幕上显示的!您必须计算出您想要的行高,例如 22。然后,您的代码必须确定可以显示多少个(22 * 记录数
    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 2020-04-16
    • 1970-01-01
    • 2019-07-03
    • 2012-08-14
    • 2012-11-12
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多