找回密码
 立即注册

QQ登录

只需一步,快速开始

libin4wo

注册会员

11

主题

40

帖子

129

积分

注册会员

积分
129
libin4wo
注册会员   /  发表于:2016-3-16 15:27  /   查看:3958  /  回复:7
spread7中的FarPoint.Win.Spread.Row有没有类似克隆的方法?
我要实现机能是,建立一个临时变量Row, 然后将spread中的第一行赋值给Row
现在出现了问题是当我改spread中的第一行属性时,临时变量Row的属性会跟着一起改变。
我的需求是临时变量Row的属性不会跟着一起改变。

7 个回复

倒序浏览
gw0506
超级版主   /  发表于:2016-3-16 17:38:34
沙发
你给我看看代码吧,我需要根据具体代码来分析。
总的来说,就是复制了引用类型的对象而不是值类型的对象,所以改一个,都改了。
回复 使用道具 举报
libin4wo
注册会员   /  发表于:2016-3-17 09:00:50
板凳
            Dim rowList As Dictionary(Of Integer, FarPoint.Win.Spread.Row) = New Dictionary(Of Integer, FarPoint.Win.Spread.Row)()

            rowList.Add(0, vaSpread1.ActiveSheet.Rows.Get(0))

            vaSpread1.ActiveSheet.Rows.Get(0).BackColor = Color.Red
            vaSpread1.ActiveSheet.Rows.Get(0).Height = 11
例子代码就是上面的那些,当我改变Spread第一行的背景色和高时,rowList里面的值就跟着一起变了。
上面我只是举了BackColor 和Height ,还有其他的类似一些属性需要改,比如celltype,Border等属性
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-3-17 09:50:40
地板
你这就是把Rows.Get(0)的对象添加到rowList中了,始终是一个实例。一改肯定都改了。你要新建个Row,然后让他各种属性设置都跟Rows.Get(0)一样,这才能剥离开。
回复 使用道具 举报
libin4wo
注册会员   /  发表于:2016-3-17 10:27:20
5#
新建个Row,直接赋值的话,也有同样的问题,但是要是一个一个属性去设定的话,属性又太多了,所以才请教一下有没有类似像 ButtonCellType里面的Clone方法,这样就可以整体把所有属性都复制过去了,如果Row不行的话,能不能把整个Spread复制一份。
Dim Spread2 As FarPoint.Win.Spread.FpSpread= New FarPoint.Win.Spread.FpSpread            
Spread2 = Spread1
让Spread1中的所有属性在Spread2中都有,但是修改Spread1中的属性Spread2里不会跟着改变。
如果一个个属性取赋值的话,那就太多了
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-3-17 11:06:57
6#
libin4wo 发表于 2016-3-17 10:27
新建个Row,直接赋值的话,也有同样的问题,但是要是一个一个属性去设定的话,属性又太多了,所以才请教一 ...
  1.             SheetView sv = this.fpSpread1.ActiveSheet.Clone();
  2.             sv.Cells[0, 0].BackColor = Color.Red;
复制代码

原有sheet的单元格背景色不变。

评分

参与人数 1满意度 +5 收起 理由
libin4wo + 5 很给力!

查看全部评分

回复 使用道具 举报
libin4wo
注册会员   /  发表于:2016-3-17 15:40:07
7#
好的,解决, 非常感谢!
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-3-17 17:23:08
8#
libin4wo 发表于 2016-3-17 15:40
好的,解决, 非常感谢!

不客气~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部