我有一个 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/