找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng 讲师达人认证 悬赏达人认证

超级版主

299

主题

7874

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13131

活字格认证圣诞拼拼乐微信认证勋章讲师达人元老葡萄悬赏达人

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-3 19:50  /   查看:5632  /  回复:0
Spread中本身内置了很多快捷键操作,不过有时候我们也需要实现一些自定义的快捷键行为,在Spread中只需继承FarPoint.Win.Spread.Action就可以实现自定义的快捷键。

本文简单介绍如何实现自定义的Delete键快捷行为,我们实现的功能是按下Delete时,只清空单元格的Value,不清空单元格的样式设置,如果单元格处于锁定状态不进行清空操作,代码实现如下:
  1.     public class ClearValueAction : FarPoint.Win.Spread.Action
  2.     {
  3.         public override void PerformAction(object source)
  4.         {
  5.             if (source is SpreadView)
  6.             {
  7.                 SpreadView spread = (SpreadView)source;
  8.                 SheetView sheet = spread.Sheets[spread.ActiveSheetIndex];
  9.                 CellRange cr = sheet.GetSelection(0);
  10.                 StyleInfo si = new StyleInfo();

  11.                 for (int r = 0; r < cr.RowCount; r++)
  12.                 {
  13.                     for (int c = 0; c < cr.ColumnCount; c++)
  14.                     {
  15.                         sheet.Models.Style.GetCompositeInfo(cr.Row + r, cr.Column + c, -1, si);
  16.                         if (!si.Locked)
  17.                         {
  18.                             sheet.Cells[cr.Row + r, cr.Column + c].ResetValue();
  19.                         }
  20.                     }
  21.                 }
  22.             }
  23.         }
  24.     }
复制代码


给Spread添加自定义的快捷键:
  1.     private void Form1_Load(object sender, EventArgs e)
  2.     {
  3.         InputMap im = fpSpread1.GetInputMap(InputMapMode.WhenFocused);
  4.         ActionMap am = fpSpread1.GetActionMap();
  5.         im.Put(new Keystroke(Keys.Delete, Keys.None), "ClearValue");
  6.         am.Put("ClearValue", new ClearValueAction());
  7.     }
复制代码


源码下载:VS2010 + Spread .NET 6.0.3505

0000_Clear.zip (11.09 KB, 下载次数: 551)

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部