找回密码
 立即注册

QQ登录

只需一步,快速开始

pinglan7

注册会员

13

主题

32

帖子

91

积分

注册会员

积分
91

活字格认证

QQ
pinglan7
注册会员   /  发表于:2012-2-8 14:52  /   查看:10761  /  回复:13
您好!
版本:SpreadWinForm 4
我需要实现以下功能:
用户选中单元格之后,右键点击“单元格类型”,弹出一个dialog窗体,和设计器里面的单元格类型窗体一样,用户设置完成后,单元格类型被改变。
我现在是这样写的:
  1.       FarPoint.Win.Spread.Design.common.LoadResourceManagerForStrings();  
  2.             FarPoint.Win.Spread.Design.CellTypeDlgV3 cct = new FarPoint.Win.Spread.Design.CellTypeDlgV3(fpSpread1);
  3.             cct.ShowDialog();
复制代码
但是在运行时,报错“无法将类型为FarPoint.Win.Spread.FpSpread的对象强制转换为类型FarPoint.SpreadWrapper.SpreadWrapper”
请求:
帮我实现这个功能!谢谢!

13 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-2-8 15:29:00
沙发
首先添加FprPoint.Win.Spread.Design.Dll的引用,然后添加下面的代码:
  1. FarPoint.Win.Spread.Design.ExternalDialogs.CellTypeEditor(fpSpread1);
复制代码
回复 使用道具 举报
pinglan7
注册会员   /  发表于:2012-2-8 15:51:00
板凳

回复 2# dof 的帖子

在Dialog窗体选择任何一种CellType,点击OK,还是弹出提示:
无法将类型为FarPoint.Win.Spread.FpSpread的对象强制转换为类型FarPoint.SpreadWrapper.SpreadWrapper
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-2-8 16:14:00
地板
附件是我测试用的Demo,上面两种方法在我的环境中都可行,我是VS2008 + .net3.5 + Spread 4.0.3526.2008 + XP
你测试一下我的代码能否在你的环境中正确执行,如无法再现你的问题,你可以发一个Demo给我们调试。
Spread4.0.zip (22.02 KB, 下载次数: 971)
回复 使用道具 举报
pinglan7
注册会员   /  发表于:2012-2-8 18:50:00
5#
测试环境:vs2005 + .net2.0 + Spread4.0.2022.2005 + winxp
SpreadTest4.0.rar (174.73 KB, 下载次数: 985)
回复 使用道具 举报
pinglan7
注册会员   /  发表于:2012-2-8 18:53:00
6#
测试环境:Spread4.0.2022.2005 + vs2005 + winxp
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-2-9 12:18:00
7#

回复 6# pinglan7 的帖子

你好,在Spread4.0.2024.2005 版本中修复过单元格编辑的Bug,你可以升级到最新最新版本Spread4.0.2026.2005,下载地址:http://www.gcpowertools.com.cn/d ... win4_net20-2026.zip
回复 使用道具 举报
pinglan7
注册会员   /  发表于:2012-2-11 17:00:00
8#
报错的问题解决了,谢谢!
但是,使用下面的代码,不管选中的单元格是什么类型,都弹出空类型的窗体。我想实现在弹出的单元格类型窗体中,默认加载活动单元格的类型。我是用下面的代码:
  1. FarPoint.Win.Spread.Design.common.LoadResourceManagerForStrings();
  2.             FarPoint.Win.Spread.Design.CellTypeDlgV3 ctd = new FarPoint.Win.Spread.Design.CellTypeDlgV3(fpSpread1);
  3.             if (fpSpread4.ActiveSheet.ActiveCell.CellType != null)
  4.                 ctd.ApplyCellType(fpSpread1.ActiveSheet.ActiveCell.CellType, false);         
  5.             ctd.ShowDialog();
复制代码
但是没有效果,继续请求支援!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-2-13 09:48:00
9#

回复 8# pinglan7 的帖子

是通过 ctd.CellTypeIndex = 2; 来实现你需要的功能。
回复 使用道具 举报
pinglan7
注册会员   /  发表于:2012-2-13 10:02:00
10#

回复 9# dof 的帖子

谢谢回复。不过这样不行的。
ctd.CellTypeIndex = n 显示的总是初始的类型属性,并不能显示我所选的单元格属性。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部