2011-01-21 10 views
0

WPFを使用してOutlook用アドインを作成しました。 「Flare」を除いてすべてが正しく機能しています。 WPFウィンドウが開くと、Outlookフォームに中央揃えされず、画面中央に開きます。私はCenterOwnerにWindowStartLocationを設定しましたが、これはそのトリックをしていないようです。センターOutlook WPFアドイン

答えて

0

Outlookの現在のインスタンスへの参照を取得し、そのインスタンスのApplicationオブジェクトにアクセスしてウィンドウのサイズと位置(左、上)を取得し、ウィンドウの位置を取得する数学を行うことができるはずです。似

何か:

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ウィンドウが第1のモニタ上で、最大化されていることを想定。いくつかのよりロジックはコーリーからの指導で、その他の不測の

+0

私は少しマッサージしなければなりませんでしたが、私は必要なものを正確に教えてくれました。うまくいけば私のためにWeb開発者に今戻ってください。私は、少なくとも私のマシンでは、デュアルモニター上の何ものとも勘違いする必要はありませんでした。私の最終的な解決策は以下の通りです。 –

2

私のソリューションを世話をするために書かれなければなりません。

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; 
0

蘭のアプリケーションがある最も単純な形式でVBAのanswer-、探している本を越えホストと私は現在のフォームへのショートカットです。

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