【发布时间】:2021-02-27 17:24:04
【问题描述】:
大家好。
我所有的用户都有 2 台显示器。我有一个 VSTO Outlook 插件,它基本上是一个功能区按钮和一个表单。如果单击我的功能区按钮,我将创建并显示一个新表单。我不希望我的表单显示在显示 Outlook 的同一监视器上。我想在另一台显示器上打开它。这是我通常在普通 winforms 应用程序中所做的:
Screen[] allScreens = Screen.AllScreens;
int i = allScreens.Count<Screen>();
if (i > 1)
{
foreach (Screen s in allScreens)
{
if (s.DeviceName != Screen.FromControl(this).DeviceName)
{
myForm.Location = s.WorkingArea.Location;
myForm.maximise = true;
myForm.Show();
}
}
}
else
{
this._outlookAuths.Show(this);
}
但是在 Ribbon 类中工作时没有“this”指针。我试图获取显示功能区按钮的监视器,但它不是普通 winforms 按钮类的一部分。试图获取我的表单的父级,它应该是 MS Outlook,但返回 null。顺便说一句,我表单上的 CentreParent 属性也不起作用,但 CentreParent 与我想要的相反。提前致谢。
【问题讨论】:
-
您可以在表单显示之前检查和更改屏幕。
标签: c# winforms outlook vsto outlook-addin