在vsto c#中,当复制(不是粘贴)一个范围时,如何知道这个范围(row/col/rect info)
本文关键字:范围 何知道 row info rect col 一个 vsto 复制 | 更新日期: 2023-09-27 18:03:14
以excel 2013为例我选择范围A1:C3和ctrl-c或右键单击复制。注意到有一个动画在这个范围内移动,这意味着你只是复制了它。
现在我只想在我的代码中得到这个范围。
我刚刚钩住了复制发明在windows消息。怎样才能得到这个范围呢?请帮助。
示例代码:
private override onCopy(Excel.Range source){
//...
base.onCopy(source);
//Now I can get the source range when copy happens.
//But in vsto, there is no such method.
//Help me to work around
}
您可以使用Selection对象来获取当前选择。但它可能返回另一个选择,而不仅仅是复制。
要获得复制的选择对象,你需要设置一个键盘钩子来拦截Ctrl+C键盘按钮和/或重新使用ribbon控件。
参见使用快捷键调用Office插件中的函数来开始使用Windows Hooks。
很可能重新利用功能区控件就足够了(上下文菜单使用功能区UI)。有关详细信息,请参阅Office Fluent功能区中的临时重新使用命令。