我使用WPF为Outlook创建了一个加载项。一切都正常,除了“耀斑”。当WPF窗口打开时,它不在Outlook窗体的中心,它在屏幕上打开。我将WindowStartLocation设置为CenterOwner,但这似乎没有做到这一点。
答案 0 :(得分:2)
我的解决方案,在Cory的指导下:
var sendToPulse = new Pulse_Outlook_Presentation.SendToPulse ();
var interopApplication = Globals.ThisAddIn.Application;
var x = (interopApplication.ActiveWindow ().Left + interopApplication.ActiveWindow ().Width / 2) - (sendToPulse.Width / 2);
var y = (interopApplication.ActiveWindow ().Top + interopApplication.ActiveWindow ().Height / 2) - (sendToPulse.Height / 2);
OutlookWin32Window parentWindow = new OutlookWin32Window (Globals.ThisAddIn.Application.ActiveWindow ());
sendToPulse.Left = x;
sendToPulse.Top = y;
答案 1 :(得分:0)
您应该能够获得对当前Outlook实例的引用,访问该实例的Application对象并获取Window大小和位置(Left,Top)并进行一些数学计算以获得窗口的定位。
类似于:
Dim interopApplication As Outlook.Application = _
Me.ActiveExplorer().Application
With interopApplication.ActiveWindow
Dim _left = Me.Width - (.Width / 2)
Dim _top = Me.Height - (.Height / 2)
End With
这假设Outlook窗口位于第一个监视器上并且已最大化。必须编写更多逻辑来处理其他突发事件
答案 2 :(得分:0)
以最简单的形式寻找VBA答案,其中应用程序是主机,而我是当前表单的快捷方式。
Private Sub UserForm_Initialize()
ProgressFrame.Caption = ""
Me.Left = Application.ActiveWindow().Left + Application.ActiveWindow().Width / 2 - (Me.Width / 2)
Me.Top = Application.ActiveWindow().Top + Application.ActiveWindow().Height / 2 - (Me.Height / 2)
End Sub