找回密码
 立即注册

QQ登录

只需一步,快速开始

lh8350

论坛元老

33

主题

80

帖子

2万

积分

论坛元老

积分
23275

活字格认证

[已处理] 撤销问题

lh8350
论坛元老   /  发表于:2012-9-11 11:31  /   查看:5658  /  回复:3
dof,你好!我有个问题要请教你,我应用了ClipboardPasteToFill这个属性后可以实现多单元格粘贴,但是撤销的时候存在有这样一个问题。就是当我第一次粘贴一片数据的时候,点击保存按钮,保存了该修改。然后我就接着修改另外的一片区域,这时候我又不想修改了,就按住ctrl+z撤销,第一次撤销没问题,是撤销的刚刚修改的数据,但是如果连续按两次ctrl+z撤销的话,第一次修改后保存的数据又被撤销了。我如何才能避免不去撤销已经保存过的数据呢?望指教!!!

3 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-11 15:06:00
沙发
从你的需求来看,你是想在保存之后,之前的操作历史记录就不再起作用,如果是这样,你可以在保存时将UndoList和RedoList清空,这样保存之前的操作就不能回退了:
  1.     private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
  2.     {
  3.         fpSpread1.UndoManager.UndoList.Clear();
  4.         fpSpread1.UndoManager.RedoList.Clear();
  5.     }
复制代码
回复 使用道具 举报
lh8350
论坛元老   /  发表于:2012-9-12 09:27:00
板凳
dof,不行啊,我是应用属性ClipboardPasteToFill实现多单元格粘贴的,他会有默认的撤销,不是我写的撤销。这样引用上面的代码的话,undolist,redolist是空。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-12 11:51:00
地板
回复 3楼lh8350的帖子

昨天给出的代码只是大概演示了实现方法,并没有进行是否为空的判断:
  1.         {
  2.             if (fpSpread1.UndoManager.UndoList != null)
  3.             {
  4.                 fpSpread1.UndoManager.UndoList.Clear();
  5.             }

  6.             if (fpSpread1.UndoManager.RedoList != null)
  7.             {
  8.                 fpSpread1.UndoManager.RedoList.Clear();
  9.             }            
  10.         }
复制代码


运行附件中的程序,并按照以下步骤进行操作:
1、运行程序
2、选中Cells[0,0]单元格,并通过 Ctrl + C 复制该单元格的内容
3、选中Cells[1,0,3,4],并通过 Ctrl + V 粘贴复制的内容
4、点击菜单中的【】菜单项
5、在【保存ToolStripMenuItem_Click】方法中可以查看fpSpread1.UndoManager.UndoList和fpSpread1.UndoManager.RedoList的值,会发现此时UndoList中有一个可以撤销的操作,而RedoList为null
6、此时再通过 Ctrl + Z 就无法进行侧小操作



6000_CtrlZ.zip (10.26 KB, 下载次数: 448)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部