有没有办法选择以编程方式添加到 Office 文档的自定义控件(以启用移动和调整大小)?

问题描述 投票:0回答:1

背景:按照 MSDN 文档,我以编程方式向 Excel 电子表格添加控件,如下所示:

ControlSite controlSite = vstoWorksheet.Controls.AddControl(webViewControl, 100, 100, 400, 300, "webView");

目标:允许用户调整大小和移动自定义控件,就像其他可嵌入 Excel 电子表格的项目一样。例如,这是一个空图表:

此图表已通过单击“选中”。从这里可以通过拖动圆圈来调整大小,也可以通过在边框或图表内拖动来移动它。

此图表也是以编程方式添加的:

Chart chart = vstoWorksheet.Controls.AddChart(30, 30, 300, 200, "chart");

问题:点击自定义控件没有同样选中(没有出现边框和圆圈,也不能按

delete
键删除)。

我尝试过的内容:由于我在网上找不到任何关于此的内容,所以我非常深入地重新实施,但在边缘情况下苦苦挣扎(正如预期的那样)。我偶然发现了 ControlSite.Select 方法并决定尝试一下。我将它连接到鼠标单击事件处理程序中,我惊讶地发现,在单击我的控件然后单击 Excel 之外后,它产生了边框 + 圆圈 UI,并允许我完全按照自己的需要移动和调整大小。

private void onGotFocus(object sender, RoutedEventArgs e)
{
    _controlSite.Select(false); // I've also tried true, and a bunch of other things like different event handlers, programmatically changing focus after, etc.
}

是否有更好/受支持的方式来访问此功能?它目前不可靠,因为它需要一些奇怪的焦点来回跳跃,并且还需要监听 winforms/WPF 点击事件。看来既然有了这个功能,就一定有更明智的使用方式。

附加说明:调用

Select
后,如果不执行“失去焦点技巧”,excel 中的函数栏将按照 文档 中的指示进行填充。此时可以使用删除键删除该控件。但是边框+省略号没有出现

c# excel winforms vsto office-addins
1个回答
0
投票

您可以考虑将其放置在 Excel 中的自定义任务窗格中,而不是将 Web 浏览器实例添加到文档中。在这种情况下,您将更好地控制它的大小调整方式。在如何:将自定义任务窗格添加到应用程序文章中阅读更多相关信息。

© www.soinside.com 2019 - 2024. All rights reserved.