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

umuewwlo  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(82)
    • 背景**:在MSDN documentation之后,我将以编程方式向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中的功能栏被填充为the documentation所示。2此时可以使用delete键删除控件。3但是,边框+省略号不会出现。

egmofgnx

egmofgnx1#

您可以考虑将Web浏览器示例放置在Excel的自定义任务窗格中,而不是将其添加到文档中。在这种情况下,您将更好地控制如何调整其大小。请在How to: Add a custom task pane to an application文章中阅读有关此内容的详细信息。

相关问题