2012-08-07 29 views
2

我有奇怪的问题与ElementHost的上CustomTaskPane在Excel 2010中的32位的Windows 7 64位系统,内部主机.NET 4.0ElementHost的不刷新的工作簿后,在Excel中移到它2010

控制(或主机本身)后不重新绘制工作簿窗口移动了。 为了说明这一点,我已经创建的样本:

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

我省略为简单起见孩子的控制,结果是一样的。

这里是如何看起来如预期: enter image description here

现在我把工作簿了一下周围,我也得到:预计不会 enter image description here

显然,灰色和黑色区域(与实际控制相同的结果主办)。 _host刷新修复了问题 - 重新绘制自己和孩子,但问题是我没有发现VSTO中的任何事件来检测工作簿何时被移动。

问题:

  1. 在哪里那些黑色/灰色地带从何而来?
  2. 是否有可能避免/修复它,以及如何?
  3. (作为解决方法)是否可以检测工作簿窗口移动,以便我可以刷新_host并为其发生的唯一情况祷告? (坏主意)

其他测试表明,Windows窗体控件不会遭受这种行为。

在此先感谢。

回答

0

您应该将一个真正的XAML用户控件放入ElementHost。

在您的WPF用户控件中,使背景颜色=蓝色的网格。

不要依赖要素主机本身

还要检查更新,ElementHost的VSTO中得到很多的bug。

+0

为简单起见,我省略了子控件,因为结果相同 – Arnas 2012-10-17 16:24:58

相关问题