滚动条拉到最下面和最右边的时候,能不能让单元格铺满而不是只保留一行一列
当我把两个滚动条都拉到底的时候,数据区会只保留一行一列,能否设置不保留一行一列,而是铺满整个数据区?回复 1楼zhuliwangfen的帖子
你试试看下面的代码是否满足你的需求。
int i, j; // i 表示能滚动的最后一行, j 表示能滚动的最后一列
// 获取能滚动的最后一行和最后一列
this.gcSpreadSheet1.ActiveSheet.ActiveColumnIndex = 99;
this.gcSpreadSheet1.ActiveSheet.ActiveRowIndex = 499;
this.gcSpreadSheet1.ShowActiveCell(GrapeCity.Windows.SpreadSheet.UI.VerticalPosition.Bottom, GrapeCity.Windows.SpreadSheet.UI.HorizontalPosition.Right);
i = this.gcSpreadSheet1.GetViewportTopRow(this.gcSpreadSheet1.GetActiveRowViewportIndex());
j = this.gcSpreadSheet1.GetViewportLeftColumn(this.gcSpreadSheet1.GetActiveColumnViewportIndex());
private void gcSpreadSheet1_LeftColumnChanged(object sender, GrapeCity.Windows.SpreadSheet.UI.ViewportEventArgs e)
{
if (j!=0 &&e.NewIndex > j)
{
this.gcSpreadSheet1.SetViewportLeftColumn(this.gcSpreadSheet1.GetActiveColumnViewportIndex(), j);
}
}
private void gcSpreadSheet1_TopRowChanged(object sender, GrapeCity.Windows.SpreadSheet.UI.ViewportEventArgs e)
{
if (i != 0 && e.NewIndex > i)
{
this.gcSpreadSheet1.SetViewportTopRow(this.gcSpreadSheet1.GetActiveRowViewportIndex(), i);
}
}
回复 2楼Zoe的帖子
谢谢你的回答这确实是我要的,但是还是会空出一些距离,能不能让单元格正好顶到边上。
或者像Excel2010一样有“数据跟踪机制”
1:当超出控件显示范围的单元格没有数据时,滚动条就直接以控件大小为拖拽可达范围
2:当超出控件显示范围的单元格有数据时,滚动条以数据的最后一 行/列为拖拽可达范围 回复 3楼zhuliwangfen的帖子
>>能不能让单元格正好顶到边上。
这个你需要自己算出来空白区域,调整下最后一列的宽度和最后一行的高度来铺满。
>>1:当超出控件显示范围的单元格没有数据时,滚动条就直接以控件大小为拖拽可达范围
>>2:当超出控件显示范围的单元格有数据时,滚动条以数据的最后一 行/列为拖拽可达范围
这个需要你算出显示数据范围的TopRow 和LeftColumn, 然后赋值给上面代码的i和J来调整。
获取有数据的单元格可以用下面的方法。
this.gcSpreadSheet1.ActiveSheet.GetLastDirtyRow(GrapeCity.Windows.SpreadSheet.Data.StorageType.Data);
this.gcSpreadSheet1.ActiveSheet.GetNonEmptyColumns();
回复 4楼Zoe的帖子
>>能不能让单元格正好顶到边上。
这个你需要自己算出来空白区域,调整下最后一列的宽度和最后一行的高度来铺满。
谢谢!
那么可以在不调整行和列宽高的情况下达到效果吗?
像微调滚动条一样,现在滚动条每次移动都是移动一个单元格高/宽的距离,我想调用一个方法直接微调到至“顶到边上”可以吗? 回复 5楼zhuliwangfen的帖子
目前产品还不支持这个功能,在后续版本中我们会考虑支持这个功能。 回复 6楼Zoe的帖子
好的,谢谢
页:
[1]