在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
}

在vsto c#中,当复制(不是粘贴)一个范围时,如何知道这个范围(row/col/rect info)

您可以使用Selection对象来获取当前选择。但它可能返回另一个选择,而不仅仅是复制。

要获得复制的选择对象,你需要设置一个键盘钩子来拦截Ctrl+C键盘按钮和/或重新使用ribbon控件。

参见使用快捷键调用Office插件中的函数来开始使用Windows Hooks。

很可能重新利用功能区控件就足够了(上下文菜单使用功能区UI)。有关详细信息,请参阅Office Fluent功能区中的临时重新使用命令。