找回密码
 立即注册

QQ登录

只需一步,快速开始

当我把两个滚动条都拉到底的时候,数据区会只保留一行一列,能否设置不保留一行一列,而是铺满整个数据区?
桌面.rar (38.23 KB, 下载次数: 1326)

6 个回复

倒序浏览
Zoe
银牌会员   /  发表于:2013-3-12 17:48:00
沙发
回复 1楼zhuliwangfen的帖子

你试试看下面的代码是否满足你的需求。

  1. int i, j; // i 表示能滚动的最后一行, j 表示能滚动的最后一列        
  2.       
  3.             // 获取能滚动的最后一行和最后一列
  4.             this.gcSpreadSheet1.ActiveSheet.ActiveColumnIndex = 99;
  5.             this.gcSpreadSheet1.ActiveSheet.ActiveRowIndex = 499;
  6.             this.gcSpreadSheet1.ShowActiveCell(GrapeCity.Windows.SpreadSheet.UI.VerticalPosition.Bottom, GrapeCity.Windows.SpreadSheet.UI.HorizontalPosition.Right);

  7.             i = this.gcSpreadSheet1.GetViewportTopRow(this.gcSpreadSheet1.GetActiveRowViewportIndex());
  8.             j = this.gcSpreadSheet1.GetViewportLeftColumn(this.gcSpreadSheet1.GetActiveColumnViewportIndex());           
  9.       

  10.         private void gcSpreadSheet1_LeftColumnChanged(object sender, GrapeCity.Windows.SpreadSheet.UI.ViewportEventArgs e)
  11.         {
  12.            if (j!=0 &&e.NewIndex > j)
  13.             {
  14.                 this.gcSpreadSheet1.SetViewportLeftColumn(this.gcSpreadSheet1.GetActiveColumnViewportIndex(), j);
  15.             }
  16.             
  17.         }

  18.         private void gcSpreadSheet1_TopRowChanged(object sender, GrapeCity.Windows.SpreadSheet.UI.ViewportEventArgs e)
  19.         {
  20.             if (i != 0 && e.NewIndex > i)
  21.             {
  22.                 this.gcSpreadSheet1.SetViewportTopRow(this.gcSpreadSheet1.GetActiveRowViewportIndex(), i);
  23.             }
  24.         }
复制代码
回复 使用道具 举报
zhuliwangfen
高级会员   /  发表于:2013-3-13 10:02:00
板凳
回复 2楼Zoe的帖子

谢谢你的回答这确实是我要的,但是还是会空出一些距离,能不能让单元格正好顶到边上。
或者像Excel2010一样有“数据跟踪机制”
1:当超出控件显示范围的单元格没有数据时,滚动条就直接以控件大小为拖拽可达范围
2:当超出控件显示范围的单元格有数据时,滚动条以数据的最后一 行/列为拖拽可达范围
回复 使用道具 举报
Zoe
银牌会员   /  发表于:2013-3-13 14:48:00
地板
回复 3楼zhuliwangfen的帖子

>>能不能让单元格正好顶到边上。
这个你需要自己算出来空白区域,调整下最后一列的宽度和最后一行的高度来铺满。

>>1:当超出控件显示范围的单元格没有数据时,滚动条就直接以控件大小为拖拽可达范围
>>2:当超出控件显示范围的单元格有数据时,滚动条以数据的最后一 行/列为拖拽可达范围
这个需要你算出显示数据范围的TopRow 和LeftColumn, 然后赋值给上面代码的i和J来调整。
获取有数据的单元格可以用下面的方法。

  1. this.gcSpreadSheet1.ActiveSheet.GetLastDirtyRow(GrapeCity.Windows.SpreadSheet.Data.StorageType.Data);

  2. this.gcSpreadSheet1.ActiveSheet.GetNonEmptyColumns();

复制代码
回复 使用道具 举报
zhuliwangfen
高级会员   /  发表于:2013-3-13 14:55:00
5#
回复 4楼Zoe的帖子

>>能不能让单元格正好顶到边上。
这个你需要自己算出来空白区域,调整下最后一列的宽度和最后一行的高度来铺满。

谢谢!
      那么可以在不调整行和列宽高的情况下达到效果吗?
      像微调滚动条一样,现在滚动条每次移动都是移动一个单元格高/宽的距离,我想调用一个方法直接微调到至“顶到边上”可以吗?
回复 使用道具 举报
Zoe
银牌会员   /  发表于:2013-3-13 15:50:00
6#
回复 5楼zhuliwangfen的帖子

目前产品还不支持这个功能,在后续版本中我们会考虑支持这个功能。
回复 使用道具 举报
zhuliwangfen
高级会员   /  发表于:2013-3-13 16:44:00
7#
回复 6楼Zoe的帖子

好的,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部