找回密码
 立即注册

QQ登录

只需一步,快速开始

JC.PAN

中级会员

11

主题

15

帖子

538

积分

中级会员

积分
538

活字格认证

JC.PAN
中级会员   /  发表于:2012-3-15 11:16  /   查看:6055  /  回复:1
根据昨天提问回复的帖子写了如下代码
最终获取的range对象的行列并不准确,很多都是显示[-1,-1]

因为我最终想通过fpSpread1.Sheets.Cells[range.Row, range.Column]
获得相应的cell对象,并设置cell的CellType属性,这时就会报索引错误

                foreach (FarPoint.Win.Spread.DrawingSpace.PSShape item in fpSpread1.Sheets.DrawingContainer.ContainedObjects)
                {
                    if (item != null)
                    {
                                              FarPoint.Win.Spread.Model.CellRange range = fpSpread1.GetCellFromPixel(0, 0, item.Left + (int)(fpSpread1.Sheets.Columns[0].Width), item.Top + (int)(fpSpread1.Sheets.Rows[0].Height));

                        if (range != null)
                        {
                            int r = range.Row;
                            int c = range.Column;
                            listBox1.Items.Add("sheet" + fpSpread1.Sheets.SheetName.ToString()+ "[" + r.ToString() + "," + c.ToString() + "]");

                        }
                    }
                }

1 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-3-15 11:41:00
沙发

回复 1# JC.PAN 的帖子

JC.PAN 你好,
不好意思,该贴 http://gcdn.grapecity.com/showtopic-3669.html 2# 中我没有解释清楚。注释中提到:Shape 像素位置从 Cell[0,0] 计算,Cell 的像素位置从 SheetCorner 开始计算
推测为你的 SheetConer 宽、高并非默认值,所以可以做以下修改

  1.             foreach (FarPoint.Win.Spread.DrawingSpace.PSShape item in fpSpread1.Sheets[0].DrawingContainer.ContainedObjects)
  2.             {
  3.                 if (item != null)
  4.                 {
  5.                     FarPoint.Win.Spread.Model.CellRange range = fpSpread1.GetCellFromPixel(0, 0, item.Left + (int)(this.fpSpread1.Sheets[0].RowHeader.Columns[0].Width), item.Top + (int)(this.fpSpread1.Sheets[0].ColumnHeader.Rows[0].Height));

  6.                     if (range != null)
  7.                     {
  8.                         int r = range.Row;
  9.                         int c = range.Column;
  10.                         listBox1.Items.Add("sheet" + fpSpread1.Sheets[0].SheetName.ToString() + "[" + r.ToString() + "," + c.ToString() + "]");

  11.                     }
  12.                 }
  13.             }
  14.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部