【发布时间】:2015-12-06 04:01:45
【问题描述】:
我创建了一个简单的 Windows 窗体应用程序来复制这个问题。我创建了一个 DataGridView1 并将其停靠在 Form1 上。
DataGridView 有 8 列,每列都有:
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.Column1.FillWeight = 100F;
每当我调整表单大小时,所有列都应调整为相等的宽度。但事实并非如此,有时,某些列比其他列小。
我在Form1 ResizeEnds时打印出了列宽,调整10次后得到如下结果:
private void Form1_ResizeEnd(object sender, EventArgs e)
{
foreach (DataGridViewColumn c in dataGridView1.Columns)
{
Console.Write(c.Width + " ");
}
Console.WriteLine();
}
输出:
67 67 67 67 66 67 67 67
41 40 41 41 42 41 42 40
144 145 144 146 145 145 145 143
65 57 64 65 64 66 66 65
27 26 26 26 26 27 27 23
167 166 166 166 166 167 167 163
49 50 49 50 47 49 51 51
98 98 97 99 95 97 100 99
34 25 33 34 33 34 34 35
186 177 185 186 185 186 186 187
出现这种不一致非常令人沮丧,我希望有办法解决这个问题。谢谢。
DataGridView 多次调整大小后的截图:
【问题讨论】:
-
应该会出现细微的差异。
DataGridViewColumn.Width的类型为int。当列宽从整个网格宽度中划分出来时,它们可能不会均匀划分。与其丢失浮点余数的总和,不如以某种方式调整列以补偿这种损失,因此:41 40 41 41 42 41 42 40。也就是说 - 我无法重现您发布的显着差异,例如:34 25 33 34 33 34 34 35。因此,评论而不是答案。也许OP中没有提到其他行为?
标签: c# datagridview