功能区顶部的办公室加载项/覆盖区域

本文关键字:覆盖 区域 加载项 办公室 顶部 功能区 | 更新日期: 2023-09-27 18:32:55

我想为Outlook的功能区栏创建自定义选项卡。

我立即放弃了使用标准控件创建真正的功能区栏的想法,因为我知道它受到严重限制。没有自定义控件,几乎没有可用于其他项目中相同控件的知名事件,没有机会在功能区内进行不同的设计或布局等。

我创建了一个区域,并用我的自定义 WPF 控件填充了它。该区域工作正常,但问题是:

  1. 我想在功能区中有一个自定义选项卡("MyTab"(
  2. 当我单击选项卡时,我想显示我的区域,其中的功能区控件将位于,以便我的区域看起来像是功能区栏。

功能区栏的高度是固定的,您无法将其更改为 AFAIK。有没有办法将我的区域覆盖在功能区栏的顶部?如果它涉及大量工作并不重要。我必须这样做,我想学习如何做。

功能区顶部的办公室加载项/覆盖区域

您可以考虑将自定义控件放在功能区栏的正下方。VSTO(也不是 Outlook 窗体区域(不提供任何布局,但您可以使用 Windows API 对 Outlook 窗口进行子分类。有关详细信息和示例代码,请参阅在 Outlook 中创建相邻窗口。或者仅使用高级 Outlook 视图和窗体区域,它们提供顶部子窗格布局。

Fluent UI 提供了一组预定义的控件,并且不允许对功能区本身执行任何操作。在以下系列文章中阅读有关功能区 UI 的详细信息:

  • 为开发人员自定义 2007 Office Fluent 功能区(第 1 部分,共 3 部分(
  • 为开发人员自定义 2007 Office Fluent 功能区(第 2 部分,共 3 部分(
  • 为开发人员自定义 2007 Office Fluent 功能区(第 3 部分,共 3 部分(

不可以,不能使用 Outlook 公开的任何 API 在功能区或任何其他控件的顶部覆盖区域。

在这里和其他地方听到我想做的事情确实是不可能的之后,我想出了一个解决方法。我决定,如果我不能让它与我应该使用的工具一起工作,我就即兴发挥。如果其他人需要制作高度自定义的功能区栏,下面是一个简短的说明:

  1. 使用功能区 UI 创建功能区选项卡。目前为止,一切都好。
  2. 创建一个高度为 92px 的无边框对话框(使其适合丝带内(
  3. 在该对话框上放置所需的任何自定义控件(WPF 控件需要在元素主机内(
  4. 下载"鼠标键钩子"NuGet 包并添加事件处理程序鼠标点击。
  5. 找出选项卡的位置(使用检查器 x 和 ycorrdinates(并做一个简单的IF语句来检查用户是否实际上在选项卡的边界内单击(不要忘记检查对于 X 和 Y(。当他这样做时,只需制作一个 Dialog.Show((。
  6. 使用 MouseMove 事件调整对话框大小和重新定位对话框动态。如果不这样做,则 的对话框将保持不变当用户移动检查器时。

。等等。您还必须处理最小化/最大化和关闭时对话框的行为。这是很多工作,但幻觉几乎是完美的。它看起来像一个真正的功能区选项卡,您可以在其中做任何您想做的事情。给它一个背景图像,画一个图表,打开一个浏览器......:D