本文简单介绍如何实现自定义的Delete键快捷行为,我们实现的功能是按下Delete时,只清空单元格的Value,不清空单元格的样式设置,如果单元格处于锁定状态不进行清空操作,代码实现如下:
-
public class ClearValueAction : FarPoint.Win.Spread.Action { public override void PerformAction(object source) { if (source is SpreadView) { SpreadView spread = (SpreadView)source; SheetView sheet = spread.Sheets[spread.ActiveSheetIndex]; CellRange cr = sheet.GetSelection(0); StyleInfo si = new StyleInfo(); for (int r = 0; r < cr.RowCount; r++) { for (int c = 0; c < cr.ColumnCount; c++) { sheet.Models.Style.GetCompositeInfo(cr.Row + r, cr.Column + c, -1, si); if (!si.Locked) { sheet.Cells[cr.Row + r, cr.Column + c].ResetValue(); } } } } } } 复制代码
给Spread添加自定义的快捷键:
-
private void Form1_Load(object sender, EventArgs e) { InputMap im = fpSpread1.GetInputMap(InputMapMode.WhenFocused); ActionMap am = fpSpread1.GetActionMap(); im.Put(new Keystroke(Keys.Delete, Keys.None), "ClearValue"); am.Put("ClearValue", new ClearValueAction()); } 复制代码
源码下载:VS2010 + Spread .NET 6.0.3505