【问题标题】:Attach a .net control to a worksheet without VSTO (but Excel-DNA)将 .net 控件附加到没有 VSTO(但 Excel-DNA)的工作表
【发布时间】:2016-01-31 17:44:10
【问题描述】:

我正在尝试做一些我不确定是否可行的事情。 我想使用一个 .net 3rd 方库,它提供了很好的 winform 图表控件,以替换 Excel 工作表中的一些(非常复杂和丑陋的)VBA 生成的图表。

我正在使用 Excel-DNA(顺便说一句,这很棒),我设法用它做各种事情,比如以同步和异步方式显示 Winform 表单(感谢 https://github.com/Ron-Ldn/DotNetRefEdit

到目前为止,当我激活特定工作表时,我设法使带有图表的非模态表单出现,并且通过设置它的 parent 和 topMost 属性,它有点具有预期的行为。但是放置它是一个真正的痛苦(不同的屏幕尺寸),我想知道是否有办法正确地做到这一点

所以问题来了:我能否以某种方式将 .Net 表单或自定义控件附加到工作表,甚至可以将其相对于特定单元格定位?它必须是非模态的,并且仅当我们在特定工作表上时才会显示。

我知道使用 VSTO 可以将控件添加到工作表,但我不想使用 VSTO。我也知道我可以创建自己的 ActiveX 控件并注册它,然后将它放在 Excel 中,就像我使用另一个按钮控件一样,但根据我所读到的内容,这似乎很危险

感谢您的所有想法或建议

【问题讨论】:

  • 我必须添加其他内容:我想要一种正确的方式,因为在表单中显示图表似乎不正确,但如果解决方案必须使用 Forms,我愿意接受它。另外,我不能使用自定义任务窗格,重新计算也不成问题。
  • 最终用户是谁?只有你?远程同事?客户?如果用户群很小,您可以尝试制作一个订阅 Excel 事件的加载项(如 Application.SheetActivated),然后显示表单/控件。

标签: c# excel office-interop excel-dna


【解决方案1】:

考虑创建一个固定在 Excel 工作簿(工作表)右侧的自定义任务窗格 (CTP)。

有关如何在 ExcelDNA 中执行此操作的更多信息,请参阅ExcelDNA GitHub Sample on CTP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2021-12-01
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多