gpt4 book ai didi

c# - 从 C# 中查找 msform 上的所有控件

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:27 24 4
gpt4 key购买 nike

我正在尝试使用 VBA 可扩展性互操作从 c# 中查找 msform 上的所有控件。

我可以使用以下方法找到所有表格:

using System;
using Microsoft.Office.Interop.Excel
using Microsoft.Vbe.Interop;
using Microsoft.Vbe.Interop.Forms;
.....

foreach (Microsoft.Vbe.Interop.VBComponent mycom in wb.VBProject.VBComponents)
{

if (mycom.Type == Editor.vbext_ComponentType.vbext_ct_MSForm)

.....

但我找不到该表单上的控件。

我认为它应该是这样的:

....
foreach (Microsoft.Vbe.Interop.Forms.Control ctrl in Microsoft.Vbe.Interop.VBComponent.Designer.Controls)
....

但无法识别 Controls 集合。

有什么想法吗?


此线程提供了有关我面临的问题的更多信息:

http://groups.google.co.uk/group/microsoft.public.dotnet.languages.csharp/browse_thread/thread/e2fe6e6b6335780e/6c17add3bfa50b4e?hl=en&ie=UTF-8&q=msform+designer+c%23#6c17add3bfa50b4e

最佳答案

这段代码应该可以工作:

using System;
using Microsoft.Office.Interop.Excel
using VBA = Microsoft.Vbe.Interop;

...

VBA.Forms.UserForm form;
VBA.Forms.Control c;

foreach (VBA.VBComponent mod in wb.VBProject.VBComponents)
{
// Use only VBA Forms
if (!(mod.Designer is VBA.Forms.UserForm)) continue;

form = (VBA.Forms.UserForm) mod.Designer;

for (int i = 1; i < form.Controls.Count; i++)
{
c = (VBA.Forms.Control)form.Controls.Item(i);
...
}
}

关于c# - 从 C# 中查找 msform 上的所有控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1200576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com