您好,
动态设置列宽,需要根据显示的列的数量计算列的Width 和Position 值,如显示N列,N列的总宽度为width,则列宽可计算为:Column.Width=Column.width*(this.PrintWidth / width) ,再根据每一列宽修改对应的Position 坐标。
代码如下:
for (int c = 0; c < cols.Count; c++)
{
headers[c].Width = headers[c].Width * (this.PrintWidth / width);
cols[c].Width = headers[c].Width;
// 设置控件坐标
if (tmp == null)
{
// 设置需要显示的第一列坐标
headers[c].Location = new PointF(0, headers[c].Location.Y);
cols[c].Location = new PointF(headers[c].Location.X, cols[c].Location.Y);
}
else
{
// 设置需要显示的非第一列坐标,应该为前一列坐标加上宽度
headers[c].Location = new PointF(tmp.Location.X + tmp.Width, headers[c].Location.Y);
cols[c].Location = new PointF(headers[c].Location.X, cols[c].Location.Y);
}
} |