找回密码
 立即注册

QQ登录

只需一步,快速开始

taxsoft

中级会员

76

主题

246

帖子

608

积分

中级会员

积分
608

活字格认证微信认证勋章元老葡萄

taxsoft
中级会员   /  发表于:2012-5-4 08:56  /   查看:11345  /  回复:20
想添加SheetTab的上下文菜单,没有找到合适的对象:
以下代码如何修改?
FPspread1.TabStrip.ActiveSheetTab.ContextMenuStrip = ContextMenu_tab;

20 个回复

正序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-8 14:43:00
21#
OK
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-8 12:59:00
20#
原帖由 dof 于 2012-5-8 9:30:00 发表
我调试了你的程序,如果进行一次【复制】操作之后,连续进行多次【粘贴】操作,第二次的时候shv.SheetName = String.Empty就会报错,我修改了一下【粘贴】事件,可以【复制】一次之后连续【粘贴】
[code]    Private Sub TSMenu_L_Paste_Click(ByVal sender As System.Object, ByVal e As System.Ev



谢谢,解决问题!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-8 09:30:00
19#
我调试了你的程序,如果进行一次【复制】操作之后,连续进行多次【粘贴】操作,第二次的时候shv.SheetName = String.Empty就会报错,我修改了一下【粘贴】事件,可以【复制】一次之后连续【粘贴】
  1.     Private Sub TSMenu_L_Paste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSMenu_L_Paste.Click
  2.         Dim shv As New SheetView()
  3.         If Not copiedSheetView Is Nothing Then
  4.             'shv = copiedSheetView
  5.             shv = CopySheet(copiedSheetView)
  6.             Try
  7.                 shv.SheetName = String.Empty   '执行第二次异常,不允许赋空值
  8.                 spreadArea.Sheets.Insert(spreadArea.ActiveSheetIndex, shv)
  9.             Catch ex As Exception
  10.             End Try
  11.         End If
  12.     End Sub
复制代码
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-8 08:58:00
18#
原帖由 dof 于 2012-5-7 17:28:00 发表
我这边将 SheetName 设置为 Empty  程序运行报错,不知你能否发给完整的Demo演示你的整个拷贝粘贴过程。

TestCopySheet.rar

66.9 KB, 下载次数: 69

rar

回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-7 17:28:00
17#
我这边将 SheetName 设置为 Empty  程序运行报错,不知你能否发给完整的Demo演示你的整个拷贝粘贴过程。
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-7 17:00:00
16#
原帖由 dof 于 2012-5-7 14:10:00 发表
当执行shv = copiedSheetView的时候,新Sheet的名称和原来Sheet的名称就是一样的,然后再执行shv.SheetName = String.Empty,而Spread要求每个Sheet的名称不能为空,所以会报错

14楼中的第三、四条应该是同一个意思,就是累加改变每个新Sheet的名称,Spread设计器和Excel都是采用的这种方法。


我简单就先说一个问题吧,12楼的代码,我执行一次是可以的,达到了我的预期。
效果是,我拷贝sheet1 然后调用该方法,确实拷贝成功了sheet2,这个“2”并不是我计算出来的。

但是我再调用一次就不允许为空了,但是事实上第一次允许的呀。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-7 14:10:00
15#
当执行shv = copiedSheetView的时候,新Sheet的名称和原来Sheet的名称就是一样的,然后再执行shv.SheetName = String.Empty,而Spread要求每个Sheet的名称不能为空,所以会报错

14楼中的第三、四条应该是同一个意思,就是累加改变每个新Sheet的名称,Spread设计器和Excel都是采用的这种方法。
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2012-5-7 09:08:00
14#
原帖由 taxsoft 于 2012-5-4 16:51:00 发表
在实现拷贝Sheet功能的时候,遇到新建Sheet名的问题,
当第一次执行粘贴的时候,插入Sheet成功,新sheet的sheetName同直接新建Sheet的情况,但是第二次再粘贴就不允许 shv.SheetName = String.Empty 了

copiedSheetView  是全局的。[code]  Dim shv As New SheetView()
        If  


1.我设置 SheetName = "" 的目的是使新Sheet的名字由Spread默认决定,事实上第一次调用成功了。
2.我感觉不会存在两个 SheetName = "" ,因为比如原来有sheet1 拷贝的时候,设置 SheetName = "" ,最终生成的Sheet名会是 sheet2 ,当我再次粘贴的时候,虽然依然是SheetName = "" ,应该不冲突啊,预期要产生 sheet3
3.你的说法一样的问题,比如我拷贝 sheet1 ,粘贴第一次,是 sheet1-copy,再粘贴一次。还是 sheet1-copy
4.当然了,自己去管理sheet名是可以的——总是去累加,就是觉得是个笨拙的办法,不得已而为之
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-4 17:11:00
13#
Spread中所有Sheet的名称不能重名,如果有两个SheeName = ""的Sheet是不允许的

拷贝的Sheet默认名称是不是可以设置为,原sheet名 + “- Copy”,比如说复制Sheet1,然后新Sheet的名称可以取为 “Sheet1 - Copy”,而不是新Sheet的名称设置为 SheetName = ""
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部