2012-02-29 12 views
5

まずで、あなたの時間と、これを見直しにおける支援をありがとう/ wの...ながら常に表示窓の形を維持VS2005を使用しているVB.NETのVSTO Excelアドイン。元の(つまりVBA)バージョンでは、ユーザーがまだExcelアプリケーション内にいる間は常に上に浮かぶモードレスのUserForm(frmMain)が表示されますユーザーがExcel以外の別のウィンドウに移動した場合は表示されません。エクセルアドイン - !私はエクセルVBAブックをアップグレードしようとしている</p> <p>エクセル全ての

たとえば、Excel内でユーザーはワークシートのタブをクリックして任意のセルなどを選択でき、ユーザーフォームは引き続き表示されます。これはまさに私が好きなのです。

問題は、新しいVSTOアドインでは、この同じ動作を模倣するためにWindowsフォームを取得できないということです。フォームがワークシートの後ろに隠れてしまう(i.e.-は、ワークシートを活性化させる)

私はモードレスフォームとしてフォームを表示するfrmMain.Show()を使用しますが、今のユーザーは、Excelワークシートをクリックします。

私は手動でAlt-Tabを押してフォームをビューに戻すことができますが、ユーザーがExcelアプリケーションを終了していない限り、Excelワークシート上に常に浮いている必要があります。

フォームをTopMostに設定するなど、さまざまなことを試しましたが、Excelの外を含めてどこでもフォームがTopMostになります。さらに悪いことに、ユーザーが通常Excelのダイアログボックスを起動させるような操作を行った場合(- 開いているブックを閉じ、「変更を保存しますか...」)警告ダイアログボックス自体frmMainフォーム(frmMainTopMostのため)の後ろに隠れてアクセスできません。

フォームを希望の方法(つまり、VBAで行ったのと同じ方法)で動作させるにはどうすればよいですか?

ありがとうございました!

ロブは

答えて

1

あなたはドッキングまたはExcelのアプリケーション内で浮上させることができCustom Task Panesを見てみる必要があります。 タスクペインは実際にこのような振る舞いが意図されたものですが、低レベルの接続(see related SO Post)のCOMインターフェイスを調べることもできます。