Office VSTO 插件中 Windows 窗体中的制表位不起作用
Posted
技术标签:
【中文标题】Office VSTO 插件中 Windows 窗体中的制表位不起作用【英文标题】:Tab stops in windows form in Office VSTO addin don't work 【发布时间】:2021-12-28 20:15:43 【问题描述】:我正在为 Office 编写一个简单的 VSTO 加载项。当用户点击一个按钮时,会出现一个表单,表单上有一些单行文本框、一些按钮和一些标签。这一切都在 VB.NET 中。
一切都按预期工作 - 除了我无法在表单上的控件之间切换。我已经设置了 TabIndex 和 TabStop 属性(实际上,将它们保留为默认值,看起来不错)。我还尝试在表单的 Shown 处理程序中以编程方式设置 TabIndex 和 TabStop - 但这没有任何区别。将运行时从 .NET 4.5 更改为 4.6 没有任何区别。
奇怪的是,如果我在 Windows 窗体应用程序中使用完全相同的表单(复制并粘贴 .vb 文件),选项卡将停止工作。似乎这个 VSTO 项目(或者可能是所有 VSTO 项目)的某些东西正在停止制表功能。
我使用的是 Visual Studio 2017,VSTO 插件的宿主应用程序是 MS Project 2016。
【问题讨论】:
你的代码是什么?你使用Form
类的Show
或ShowDialog
方法吗?
@EugeneAstafiev - 我使用的是 Show()。你的评论是绝对正确的:使用 ShowDialog() 得到标签工作。
【参考方案1】:
独立的 WinForms 应用程序和您的 Office 插件之间的区别在于宿主应用程序(可以是 MDI 或 SDI 应用程序)。
您很可能需要为Show
方法指定父窗口句柄。 method 接受 IWin32Window 接口的实例,该接口表示将拥有此表单的***窗口。
【讨论】:
以上是关于Office VSTO 插件中 Windows 窗体中的制表位不起作用的主要内容,如果未能解决你的问题,请参考以下文章