c# - Word VSTO 加载项 : How to set the width of a custom task pane?

标签 c# .net winforms vsto

我设计了一个 UserControl 对象来实现我的 Word 加载项的 UI。在运行时,当用户打开任务 Pane 时,我将该 UserControl 的一个实例添加到事件窗口(通过 CustomTaskPanes 集合),将其 Visible 属性设置为 true,您瞧,我得到了我的任务 Pane ...除了它被截断之外,我只能看到剩下的 70%,而且我需要手动调整任务 Pane 的大小才能看到完整的 UserControl。

首先,我不明白为什么任务 Pane 的默认行为不是只采用我放入其中的任何内容的设计大小。但情况会变得更糟。

我合乎逻辑的下一步是明确地将任务 Pane 的宽度设置为我的用户控件的宽度。由于 Windows 窗体设计器显示其 Size 属性为“700, 1500”,我愚蠢地认为我可以在运行时读取该属性并将其分配给任务 Pane 的宽度。代码如下所示:

var myTaskPane = Globals.ThisAddIn.CustomTaskPanes.Add(myUserControl, title);
myTaskPane.Visible = true;
myTaskPane.Width = myUserControl.Width;

这非常失败,因为事实证明,在运行时,“myUserControl.Width”为零。我得到的只是一个非常狭窄的任务 Pane ,仅显示 UserControl 的左侧 20%。我还尝试分配“myUserControl.Size.Width”,得到相同的结果。

因此,我将项目保存到云端,并于第二天在另一台 PC 上使用不同的显示器 (4K) 返回该项目。令我惊讶的是,当我打开 Windows 窗体设计器时,UserControl 的大小现在报告为“432, 1200”。但看起来却一模一样。

如果我为 myTaskPane.Width 分配一个立即值,就可以正常工作。如果该值恰好是 Windows 窗体设计器报告的宽度,则任务 Pane 正是显示 UserControl 所需的宽度。但我不同意硬编码设计参数。另外,我会选择哪个值? 700还是432?当然,任务 Pane 在某些系统上看起来会是错误的。

所以我有两个问题:UserControl 大小到底如何工作?在运行时我在哪里读取 UserControl 的宽度?

最糟糕的是,这似乎是一个非常基本的问题,必须有一个简单的解决方案,但我就是无法通过 Google 来摆脱这个问题。

最佳答案

这是一种切题的答案,但对于文档级加载项,必须以其他方式设置宽度。

CommandBars["Task Pane"].Width = <your value here>;

我拉了这个from here .

关于c# - Word VSTO 加载项 : How to set the width of a custom task pane?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50463832/

相关文章:

Java/JRuby on Rails 与 .NET 3.5...感觉我做错了

c# - 运行 .NET 3.5 进程时,.NET 4 和 .NET 3.5 之间是否存在差异

如果客户端在服务器失去焦点时连接到它(例如屏幕保护程序正在运行),C# 服务器将关闭/崩溃

c# - 如何将 ContextMenuStrip 添加到 ToolStripMenuItem

c# - 如何在winforms中过滤ComboBox值

c# - Windows 应用商店应用程序 (.NET) 上的 SSDP (UDP)

c# - 如何使用 LINQ to SQL 将单行添加到列表?

c# - 新部署的 Azure Web 应用程序返回 404 错误代码

c# - Composite 的简单注入(inject)器注册,结合了开放和封闭的通用实现

c# - Double.Parse 精度/舍入问题