在Excel 2010中移动工作簿之后,ElementHost不会刷新
在Excel 2010 32位的Windows 7 x64,.NET 4.0中,CustomTaskPane上的ElementHost有更奇怪的问题
主机(或主机本身)内的控制在工作簿窗口移动后不会重新绘制。 为了说明这一点,我创build了示例:
_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;
我为了简单而忽略了孩子的控制,结果是一样的。
这是如何看起来如预期的那样:
现在我把工作簿移动了一下,我得到:
显然,灰色和黑色的地区是不能预料的(与实际控制托pipe相同的结果)。 _host刷新修复了这个问题 – 重新绘制自己和孩子,但问题是我没有发现VSTO中的任何事件来检测何时移动工作簿。
问题:
- 那些黑色/灰色的地方从哪里来?
- 是否有可能避免/修复它,以及如何?
- (作为解决方法)是否有可能检测到工作簿窗口的移动,所以我可以刷新_host并祈祷其发生的唯一情况? (馊主意)
其他testing表明,Windows窗体控件不会遭受这种行为。
提前致谢。
您应该将一个真正的XAML用户控件放入ElementHost中。
在您的WPF用户控件中,使背景颜色=蓝色的网格。
不要依赖元素主机本身
另外检查更新,VSTO中的elementHost获取大量的错误。