2

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 で見つからなかったことです。

質問:

  1. それらの黒/灰色の領域はどこから来たのですか?
  2. それを回避/修正することは可能ですか?
  3. (回避策として) ワークブック ウィンドウの動きを検出して、_host を更新し、それが発生する唯一のシナリオであることを祈ることはできますか? (悪いアイデア)

他のテストでは、Windows フォーム コントロールがこの動作の影響を受けないことが示されています。

前もって感謝します。

4

1 に答える 1

0

真の XAML ユーザー コントロールを ElementHost に配置する必要があります。

WPF ユーザー コントロールで、背景色 = 青のグリッドを作成します。

要素ホスト自体に依存しない

また、更新を確認してください。VSTO の elementHost には多くのバグがあります。

于 2012-10-08T14:10:42.510 に答える