我在 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 窗体控件不会受到这种行为的影响。
提前致谢。