找回密码
 立即注册

QQ登录

只需一步,快速开始

lh8350

论坛元老

33

主题

80

帖子

2万

积分

论坛元老

积分
23275

活字格认证

lh8350
论坛元老   /  发表于:2012-8-8 09:41  /   查看:7241  /  回复:6
为什么我在spread_keydown事件中设置了:spread.Sheets[0].ClipboardCopy(FarPoint.Win.Spread.ClipboardCopyOptions.AsStringSkipHidden);以后,原来可以将选中的单元格的内容复制到公式单元格,但是在keydown事件中写了上个语句就不可以了、为什么啊?怎样才能将选中的单元格的值复制到包含选中的公式单元格呢?而且不能取消上面的拷贝的时候忽略隐藏列。
              if (e.Control)
                if (e.KeyCode == Keys.C)
                {
              spread.Sheets[0].ClipboardCopy(FarPoint.Win.Spread.ClipboardCopyOptions.Values);
                    e.Handled = true;
                    FarPoint.Win.Spread.InputMap im;
                    im = spread.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
                    im.Put(new FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden);
                }
这样写倒是可以了,但是根本就达不到不拷贝隐藏列的目的,而且sheet中的单元格内容又不可以复制到excel了?
              spread.Sheets[0].ClipboardCopy(FarPoint.Win.Spread.ClipboardCopyOptions.Values);
                    e.Handled = true;
                    spread.Sheets[0].ClipboardCopy(FarPoint.Win.Spread.ClipboardCopyOptions.AsStringSkipHidden);
                    e.Handled = true;
为什么这样写,就不可以复制到有公式的单元格呢?此处的公式是数据库中取出来的,不是直接写在spread中的。
环境vs2010+spread winform5

6 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-8 17:09:00
沙发
如果不添加spread.Sheets[0].ClipboardCopy(FarPoint.Win.Spread.ClipboardCopyOptions.AsStringSkipHidden);这行代码,使用的是Spread的默认拷贝粘贴行为,此时会将单元格的设置一块拷贝,将单元格内容复制到公式单元格之后,该单元格的公式就没有了,所以拷贝成功,然后使用AsStringSkipHidden拷贝并不会清掉单元格的公式,所以拷贝没有成功。

你的需求归结为两点:1、不考拷贝藏的单元格;2、拷贝之后可以覆盖公式单元格
不过在Spread中这两个需求是冲突的,前者只能拷贝值,而或者又需要拷贝所有单元格设置。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-8 17:11:00
板凳
  1.     FarPoint.Win.Spread.InputMap im;
  2.     im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
  3.     im.Put(new FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden);
复制代码

此外,以上代码是定义Spread快捷键的行为,通常是在Load事件中进行,如果在KeyDown中添加这个代码,只有触发KeyDown之后的下一次这三行代码的功能才会生效。
回复 使用道具 举报
lh8350
论坛元老   /  发表于:2012-8-8 17:25:00
地板
dof,难道以上的功能不可以实现吗?有没有其它的方式实现呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-8 17:59:00
5#
lh8350 你好

我会在调试之后,明天给你回复最终结果。
回复 使用道具 举报
lh8350
论坛元老   /  发表于:2012-8-15 14:30:00
6#
dof ,这个能实现吗?调试有结果了吗?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-8-15 18:05:00
7#
lh8350 你好

实在抱歉,这两个功能在实现上会有冲突,还没同时实现两个需求的办法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部