找回密码
 立即注册

QQ登录

只需一步,快速开始

Hjr2350
论坛元老   /  发表于:2013-3-12 14:58  /   查看:11586  /  回复:15
我看DEMO演示时,可以实现在当前spread中进行行拖动。
现在我有这样一个需求,我在多个spread中互相拖动行,
如我有spread1和sprad2,把spread1中的Row1拖动到spread2某个位置上
是否可以实现这样的效果。
求BZ解答,谢谢。

15 个回复

正序浏览
iceman
社区贡献组   /  发表于:2013-3-18 10:21:00
16#
回复 15楼Hjr2350的帖子

Hjr2350 你好,
可以在粘帖的时候,使用 GetSelections 方法获取 fpSpread1 中的选择范围。分别取出值,然后逐个单元格赋值。

  1.             FarPoint.Win.Spread.Model.CellRange[] crs= this.fpSpread1.Sheets[0].GetSelections();
复制代码

2.粘帖时,可以通过 fpSpread2_ClipboardPasting 来操作粘帖动作。
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-3-18 09:08:00
15#
期待你的回复...
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-15 18:07:00
14#
Hjr2350 你好

我们正在调试你的需求,下周一格尼回复结果,谢谢。
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-3-15 14:29:00
13#
我现在想连续复制粘贴
  1.                
  2.                 FarPoint.Win.Spread.Model.CellRange cr = new FarPoint.Win.Spread.Model.CellRange(2, -1, 3, 3);
  3.                 fpSpread1.ActiveSheet.ClipboardCopy(cr, ClipboardCopyOptions.All);
  4.                 fpSpread2.ActiveSheet.Rows.Add(fpSpread2.ActiveSheet.RowCount, 1);
  5.                 fpSpread2.ActiveSheet.AddSelection(fpSpread2.ActiveSheet.RowCount - 1, 0, 1, 4);
  6.                 fpSpread2.ActiveSheet.ClipboardPaste(ClipboardPasteOptions.All);

  7.                 cr = new FarPoint.Win.Spread.Model.CellRange(4, -1, 3, 3);
  8.                 fpSpread1.ActiveSheet.ClipboardCopy(cr, ClipboardCopyOptions.All);
  9.                 fpSpread2.ActiveSheet.Rows.Add(fpSpread2.ActiveSheet.RowCount, 1);
  10.                 fpSpread2.ActiveSheet.AddSelection(fpSpread2.ActiveSheet.RowCount - 1, 0, 1, 4);
  11.                 fpSpread2.ActiveSheet.ClipboardPaste(ClipboardPasteOptions.All);
复制代码

上述代码是我想通过连续复制粘贴方法,实现多个不连续单元格的复制粘贴
但是我发现我只能保存到最后一条,有没有办法实现我这样子的连续复制粘贴;
如果我这种方法有问题,不知BZ们能不能提供一个比较好的思路来解决这个问题
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-3-14 17:37:00
12#
回复 11楼Hjr2350的帖子

IDataObject data 是在复制时自动写入内存中的数据对象。在该事件中 fpSpread1_ClipboardPasted 可以通过以下代码获取:

  1.         private void fpSpread1_ClipboardPasted(object sender, FarPoint.Win.Spread.ClipboardPastedEventArgs e)
  2.         {
  3.             e.DataObject.GetData(DataFormats.StringFormat);
  4.         }
复制代码

我看到 5# 中的例子也使用了相应代码。Spread 本身不支持 多个单元格范围 粘帖。
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-3-14 17:25:00
11#
回复 10楼iceman的帖子

谢谢,我9L的问题能否给我解答下
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-3-14 15:18:00
10#
回复 5楼Hjr2350的帖子

Hjr2350 你好,
可以通过 this.fpSpread1.GetCellFromPixel 方法获取当前鼠标悬停的活跃单元格,进而可以获取当前 RowIndex,插入行。
回复 使用道具 举报
Hjr2350
论坛元老   /  发表于:2013-3-14 14:10:00
9#
5.0版,关于行高不正确的问题,我已经解决了。
但现在我发现,在我选择多个不连续的单元格时,利用ClipboardCopy和ClipboardPaste进行复制粘贴时,发现只能复制我多选时的最后一个单元格;可不可以复制所有我选中的内容?
而且,我对ClipboardPaste函数的 IDataObject data的使用不是很清楚,能给我说明一下吗

  1. public void ClipboardPaste(
  2.    ClipboardPasteOptions pasteOption,
  3.    IDataObject data,
  4.    CellRange cellRange
  5. )
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-3-14 11:05:00
8#
回复 7楼Hjr2350的帖子

请问 Hjr2350 使用的 Spread 版本是?我使用 Spread for .NET 6 ,可以正常复制行高。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部