Windows 7 x64、.NET 4.0 上の Excel 2010 32 ビットで、CustomTaskPane の ElementHost に奇妙な問題があります。
ワークブック ウィンドウを移動した後、ホスト (またはホスト自体) 内のコントロールが再描画されません。これを説明するために、サンプルを作成しました:
_host = new ElementHost { Dock = DockStyle.Fill, BackColorTransparent = false, BackColor = Color.Blue };
_userControl = new UserControl();
_userControl.Controls.Add(_host);
_taskPane = CustomTaskPanes.Add(_userControl, "Pane");
_taskPane.Visible = true;
結果は同じなので、簡単にするために子コントロールを省略しました。
期待どおりに見える方法は次のとおりです。
ワークブックを少し動かしたところ、次のようになりました。
明らかに、グレーと黒の領域は想定されていません (ホストされている実際のコントロールと同じ結果)。_host refresh は問題を修正します-それ自体と子を再描画しますが、問題は、ワークブックがいつ移動されたかを検出するためのイベントが VSTO で見つからなかったことです。
質問:
- それらの黒/灰色の領域はどこから来たのですか?
- それを回避/修正することは可能ですか?
- (回避策として) ワークブック ウィンドウの動きを検出して、_host を更新し、それが発生する唯一のシナリオであることを祈ることはできますか? (悪いアイデア)
他のテストでは、Windows フォーム コントロールがこの動作の影響を受けないことが示されています。
前もって感謝します。