我在 WPF Interop 和 Excel Addin 方面遇到了一个奇怪的错误。我正在使用.Net 3.5 SP1。
我正在使用 Add-in Express 为 Excel 2003 创建自定义任务窗格。在该任务窗格中,我使用 ElementHost 托管 WPF UserControl。 UserControl 仅包含一个带有文本框和组合框的网格。我的问题是,虽然所有内容都显示正常,但组合框不会保持下拉状态,除非我将鼠标按住向下箭头。
我不认为这一定与 Add-in Express 有关,因为当我尝试在 Excel 中无模式显示 WPF 窗口时,我遇到了类似的问题。
第二个问题是 ComboBox 似乎不愿意放弃焦点。如果我单击它,文本区域会变成灰色,表示它具有焦点,但我无法将焦点移动到窗口中的其他任何位置。夺走焦点的唯一方法是移动鼠标滚轮。
还有其他人遇到过类似的问题并设法解决它吗?
Add-in Express 帮我研究了这个问题,结果发现这与添加到 Excel 的任务窗格的窗口样式有关。如果您关闭 Windows CreateParams 中的 WS_CHILD 标志,则组合框和其他弹出窗口将按预期工作。
他们给了我这段代码以添加到我的 ADXExcelTaskPane 中:
private const uint WS_CHILD = 0x40000000;
private const uint WS_CLIPCHILDREN = 0x02000000;
private const uint WS_CLIPSIBLINGS = 0x04000000;
private CreateParams _CreateParams = new CreateParams();
protected override CreateParams CreateParams
{
get
{
_CreateParams = base.CreateParams;
if (!DesignMode)
_CreateParams.Style = (int)(WS_CLIPCHILDREN | WS_CLIPSIBLINGS); //| WS_CHILD
return _CreateParams;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)