c# - 以编程方式调整 DataGridView 的大小以删除滚动条

标签 c# winforms datagridview

我有一个 DataGridView,其中包含用户可定义的数字数据列数(大约 6-60 之间的任意位置)。在较高端,网格中的数据量超过了可以一次显示在屏幕上的数据量。我有一张与数据相关的图表。我想让两者保持同步,以便图表上的特定时间 T 与网格中的同一时间垂直对齐。

为此,我想让 DGV 的宽度刚好足以避免出现水平滚动条,使图形宽度相同,然后将滚动卸载到容器控件上。但是,我找不到一种方法来直接获取我需要将 DGV 设置为的宽度,以便从中删除滚动条。

最佳答案

要防止 DataGridView 显示其水平滚动条,您需要确保 DGV 的宽度不小于其列的宽度加上行标题的宽度。当控件的 BorderStyle 属性不是 None 时,您还需要调整添加到控件宽度(和高度)的两个像素。

下面是一个方法,它会为给定的 DataGridView 返回这个最小值:

/// <summary>
/// Return the minimum width in pixels a DataGridView can be before the control's vertical scrollbar would be displayed.
/// </summary>
private int GetDgvMinWidth(DataGridView dgv) {
    // Add two pixels for the border for BorderStyles other than None.
    var controlBorderWidth = (dgv.BorderStyle == BorderStyle.None) ? 0 : 2;

    // Return the width of all columns plus the row header, and adjusted for the DGV's BorderStyle.
    return dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) + dgv.RowHeadersWidth + controlBorderWidth;
}

关于c# - 以编程方式调整 DataGridView 的大小以删除滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651487/

相关文章:

c# - 如何更改 XML 父标签

windows - 是什么导致 GetCursorPos 返回不正确的 {0,0} 坐标?

c# - 使用 BookSleeve 移除 SortedSet

c# - 如何使用 Mock.Of<T>() 模拟没有默认构造函数的类?

winforms - WinForms DataGridView 中的水平滚动条

c# - 将多个列表绑定(bind)到 DataGridView

c# - DataGridView 图像未显示在未绑定(bind)列中

c# - 检测用户是否正在滚动 dataGridView 滚动条

c# - 找不到“用户密码凭据”

c# - 在 Windows 8.1 XAML/C# 应用程序中,如何精确设置按钮样式?