有没有办法让水平滚动条同时将列的 AutoSizeMode 设置为填充?
我有 2 列,我希望它们填充 DataGridView 的宽度。当行中内容的宽度超过 DataGridView 的宽度时,我想启用水平滚动条。不知道该怎么做。通过我所做的研究,我发现在 AutoSizeMode 中使用“AllCell”选项将启用滚动条,但是,我希望行填充 DataGridView。
你不可能同时拥有这两种行为。
您必须使用
DataGridViewColumn.MinimumWidth
属性对其进行编码。DataGridView
的 CellValueChanged
事件的示例(但您肯定必须根据您的具体情况进行调整):
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
foreach (DataGridViewColumn column in dataGridView1.Columns)
column.MinimumWidth = column.Width;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
请小心,如果数据网格中有很多行,这可能会非常耗时。
这是一篇非常旧的帖子,但我想我会添加它。如果您不介意将 AutoSizeMode 设置为 Fill。
将有问题列的 AutoSizeMode 设置为 AllCells。
这将调整列标题的大小并强制其超出可见区域,从而显示水平滚动条。
有一个简单的解决方法,尽管它显然并不理想:
AutoSizeMode
设置为 Fill
在末尾HeaderText
设置为空字符串(我显然在演示中忘记了这样做)这样,它(几乎)看起来就好像第二列的
AutoSizeMode
设置为 Fill
。
这里,
Column1
和Column2
将AutoSizeMode
设置为DisplayedCells
,Column3
设置为Fill
: