VSTO 撤回代码修改的值

简介: 这段代码实现了一个简单的撤销功能。它使用一个栈(`Stack<Action>`)来存储操作,`SetCellValues`方法记录单元格的当前状态(值)并在栈中保存恢复操作。`UndoLastOperation`方法检查栈是否为空,如果不为空,则弹出顶部的操作并执行以撤销最近的更改。

不废话,直接代码

private Stack<Action> actionStack = new Stack<Action>();
private void SetCellValues()
{
    var worksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet;
    var range = worksheet.Range["A1"];
    var previousValue = range.Value2;
    // 保存当前状态以便恢复
    actionStack.Push(() =>
    {
        range.Value2 = previousValue;
    });
}
private void UndoLastOperation()
{
    if (actionStack.Count > 0)
    {
        var undoAction = actionStack.Pop();
        undoAction();
    }
}
相关文章
|
NoSQL 安全 Go
Golang 官方推荐使用的 Redis 客户端 redigo
Golang 官方推荐使用的 Redis 客户端 redigo
315 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL删除数据 文件大小不变的原因以及处理空洞问题
总之,MySQL中删除数据后文件大小不变的现象是由于InnoDB存储引擎的设计决策,旨在优化性能和空间的重用。处理这一问题需要综合考量数据库的使用场景以及可能的性能影响,选择合适的策略
853 5
|
C# Windows
【WPF】自动完成/智能提示的文本框(AutoCompleteBox)
原文:【WPF】自动完成/智能提示的文本框(AutoCompleteBox) 使用了插件WPFToolKit。(直接在Nuget中搜即可) 使用方法参考这篇文章: http://www.
2217 0
|
3月前
|
安全 Java 开发者
AOP中的JDK动态代理与CGLIB动态代理:深度解析与实战模拟
【11月更文挑战第21天】面向切面编程(AOP,Aspect-Oriented Programming)是一种编程范式,它通过将横切关注点(cross-cutting concerns)与业务逻辑分离,以提高代码的可维护性和可重用性。在Java开发中,AOP的实现离不开动态代理技术,其中JDK动态代理和CGLIB动态代理是两种常用的方式。本文将从背景、历史、功能点、业务场景、底层逻辑等多个维度,深度解析这两种代理方式的区别,并通过Java示例进行模拟和比较。
169 5
|
9月前
|
算法 计算机视觉 开发者
YOLOv10发布,性能效率双提升,魔搭社区最佳实践来啦!
YOLO(You Only Look Once)系列目标检测框架,由于其在计算成本与检测性能之间实现了有效平衡,故而成为实时物体检测领域的标杆。
|
4月前
|
存储 数据库 虚拟化
无缝过渡:企业级服务器迁移的策略与最佳实践
【10月更文挑战第4天】随着企业数字化转型的加速,服务器迁移成为企业IT基础设施升级的重要环节。本文从架构与规划的视角,探讨了企业级服务器迁移的策略与最佳实践,旨在帮助企业实现无缝过渡,降低迁移风险,提高迁移效率。
482 4
|
6月前
|
开发工具 git
Vcpkg安装指定版本包或自定义安装包
Vcpkg安装指定版本包或自定义安装包
828 0
|
前端开发 Java API
异步编程 - 11 Spring WebFlux的异步非阻塞处理
异步编程 - 11 Spring WebFlux的异步非阻塞处理
550 0
|
监控 安全 Linux
【阿里云镜像】基于YUM方式构建Zabbix监控平台
【阿里云镜像】基于YUM方式构建Zabbix监控平台
496 1
【阿里云镜像】基于YUM方式构建Zabbix监控平台
|
机器学习/深度学习
TGANv2、VideoGPT、DVG…你都掌握了吗?一文总结视频生成必备经典模型(三)
TGANv2、VideoGPT、DVG…你都掌握了吗?一文总结视频生成必备经典模型
1236 0

热门文章

最新文章