Spread COM 的 AutoSize 属性用于设置行列充满Spread的表格控件。Spread WinForms版本中没有相应的接口,但是我们可以通过自定义方法来实现这个功能,本篇文章中将阐述如何实现这个功能。
我们需要做的就是按照元素分割 Spread 表格控件,去除固定部分如滚动条、行列头,剩余部分平均分配给行列。
- 计算行列头以及滚动条尺寸
- 平均分配给 Spread 行列
代码如下:
int spreadW = this.fpSpread1.Width;
int spreadH = this.fpSpread1.Height;
//垂直滚动条宽度
int vScrollBar = SystemInformation.VerticalScrollBarWidth;
//水平滚动条高度
int hScrollBar = SystemInformation.HorizontalScrollBarHeight;
//列头高度
float columnHeaderH = 0;
for (int i = 0; i < this.fpSpread1.ActiveSheet.ColumnHeader.RowCount; i++)
{
columnHeaderH += this.fpSpread1.ActiveSheet.ColumnHeader.Rows[i].Height+1;
}
//行头宽度
float rowHeaderW = 0;
for (int i = 0; i < this.fpSpread1.ActiveSheet.RowHeader.ColumnCount; i++)
{
rowHeaderW += this.fpSpread1.ActiveSheet.RowHeader.Columns[i].Width+1;
}
//剩余宽度和高度
int leftWidth = spreadW - vScrollBar - Convert.ToInt32(rowHeaderW);
int leftHeight = spreadH - hScrollBar - Convert.ToInt32(columnHeaderH);
//计算并设置平均列宽
int averageColWidth = leftWidth / this.fpSpread1.ActiveSheet.ColumnCount;
for (int i = 0; i < this.fpSpread1.ActiveSheet.ColumnCount; i++)
{
this.fpSpread1.ActiveSheet.Columns[i].Width = averageColWidth;
}
//计算并设置平均行高
int averageRowHeight = leftHeight/ this.fpSpread1.ActiveSheet.RowCount;
for (int i = 0; i < this.fpSpread1.ActiveSheet.RowCount; i++)
{
this.fpSpread1.ActiveSheet.Rows[i].Height = averageRowHeight;
}
Demo 下载:
VS2013 + C# + .NET 4.0