开发人员可以定义用户与行和列的交互,如是否可以更改行或列的大小、是否可以移动行或列、冻结指定的行或列、在行或列中查找数据等。
更改行或列的大小
你可以允许用户重新调整表单中行或列的大小。 设置行的Resizable属性以允许用户重置行的大小,设置列的Resizable属性以允许用户重置列的大小。用户也可以双击列首与列首之间的分隔线以重新设置列的宽窄,以适应列首文字的宽度。
用户要重置行或列的大小,仅需鼠标左键单击行首或列首的边界线,拖拽至所需位置释放鼠标。 如下图所示,当左键被按下时,鼠标位置就会显示一个工具栏。 一定要点击列的右边缘或行的下边缘以改变列宽或行高。用户双击行与行之间的分隔线可以让行自动调整高度以显示行中最高文本, 双击列与列之间的分隔线可以让列自动调整宽度以显示列中最宽文本.
默认情况下,用户可以修改数据区域的行或列的大小,但是行首和列首的大小是不允许被修改的。 在代码中,你可以重置行首或列首的大小,不仅仅局限于数据区域的行或列。你也可以使用Resizable属性覆盖默认的行为,阻止用户改变大小。
下面的代码会允许行首中的一列改变大小:
fpSread.Sheets[0].RowHeader.Columns[0].Resizable = true;
下面的代码允许行首中的全部列改变大小:
fpSread.Sheets[0].RowHeader.Columns.Default.Resizable = true;
GetColumnSizeable你可以使用SheetView类中的方法来决定行或列的大小可以被用户修改:
SetColumnSizeable
GetRowSizeable
SetRowSizeable
移动行或列
你可以允许用户拖拽移动行或列。设置AllowRowMove属性以允许用户移动行,设置AllowColumnMove 属性以允许用户移动列。如果你想允许用户移动多行或多列,需设置AllowRowMoveMultiple 或AllowColumnMoveMultiple 属性。
为移动行或列,用户仅需要左键按住行或列的头部,在行首(列首)区域内向前或向后拖拽,至所需位置放开鼠标。 (如果拖拽多行或多列,要事先选中欲操作的行或列)。 被移动的行或列会跟随鼠标指针显示一个透明的拷贝。如下图所示,第四列就被移到了左边。
你可以使用SheetView.MoveRow方法,编程实现重定位一行,也可以使用SheetView.RemoveRows 一次性移除多行。你可以使用SheetView.MoveColumn 方法,编程实现重定位一列。也可以使用SheetView.RemoveColumns方法 一次性移除多列。
通过对一个列区域进行Remove操作,你就能够一次性移除若干列。例如:
fpSpread1.Sheets(0).Columns(1,5).Remove()
设置固定的(冻结的)行或列
你可以冻结表单中的行或列(使其不可滚动)。 你可以冻结任意个表单顶部的行,使其成为前导行,你也可以冻结左侧任意多个列,使其成为前导列 你也可以冻结任意多个表单底部的行,或最右边的列。无论鼠标如何滚动,冻结的前导行或前导列都会在视图的顶部或最左端显示。无论鼠标如何滚动,冻结的尾行或尾列都会在视图的底部或最右端显示。
下列图表显示了一个冻结的尾列和尾行在视图中的显示位置。
有关冻结行和列的属性包括:
FrozenRowCount
FrozenColumnCount
FrozenTrailingColumnCount
FrozenTrailingRowCount
冻结的行或列在运行时是不可以滚动的,但是在设计时,它们是可以滚动的。
尾冻结列和尾冻结行在每一页的底部和右部不会被重复打印,作为最后一行或最后一列打印一次。 前导行和前导列可以被重复打印。
设置表单的FrozenRowCount, FrozenColumnCount, FrozenTrailingColumnCount, 或FrozenTrailingRowCount 属性:
fpSpread1.Sheets[0].FrozenColumnCount = 2;
fpSpread1.Sheets[0].FrozenRowCount = 2;
fpSpread1.Sheets[0].FrozenTrailingColumnCount = 2;
fpSpread1.Sheets[0].FrozenTrailingRowCount = 2;
查找含有数据的行或列
当使用表单工作时,你可以利用表单类中的各种不同成员来找出行或列最后一个或者格式的索引。你可以使用如下由表单所提供的方法。
GetLastNonEmptyColumn 方法
GetLastNonEmptyRow 方法
你可以通过如下属性来得到包含数据的行或列的数目:
NonEmptyColumnCount属性
NonEmptyColumnCount属性
调整行列尺寸以适应数据大小
根据单元格中数据的长度和宽度,你可以调整列宽或行高。最大数据所在行或列的尺寸称为首选尺寸。利用首选尺寸的方法有:
FarPoint.Win.Spread.Column col;
float sizerow;
float sizercol;
row = fpSpread1.ActiveSheet.Rows[0];
col = fpSpread1.ActiveSheet.Columns[0];
fpSpread1.ActiveSheet.Cells[0, 0].Text = "This text is used to determine the height and width.";
sizerow = row.GetPreferredHeight();
sizecol = col.GetPreferredWidth();
row.Height = sizerow;
col.Width = sizecol;
Row类中的GetPreferredHeight方法
Column类中的GetPreferredWidth方法
SheetView类中的 GetPreferredRowHeight方法
SheetView类中的 GetPreferredColumnWidth方法
SheetView类中的 GetPreferredCellSize方法
Row类中的GetPreferredHeight方法和 Column类中的GetPreferredWidth方法总是包括标题的单元格。对于重载了GetPreferredColumnWidth方法的表单类,当重载允许你选择包含或不包含标题的单元格时,始终会有一个重载包含标题的单元格。在下面的这段代码中,width1和width2包含了标题单元格而width3则不包含标题的单元格。
float width1 = fpSpread.Sheets[0].Columns[0].GetPreferredWidth();float width2 = fpSpread.Sheets[0].GetPreferredColumnWidth(0);float width3 = fpSpread.Sheets[0].GetPreferredColumnWidth(0, true);
使用多种不同方法来设置列宽和行高:
附:Spread for Windows Forms快速入门系列文章