2015-12-04 47 views
1

我为MS Excel创建了一个简单的AddIn,但自定义任务窗格出现问题。VSTO AddIn for Excel - 如何防止自定义任务窗格失去焦点?

自定义任务窗格控件是在WPF中编写的,但每当用户尝试将某些数据输入到他以前用鼠标选择的CTP中的文本框字段时,Excel就会将焦点钢化并将其返回到所选单元格。

我可以预防这种行为吗?

用户需要应用的解决方案是按下键盘上的“Esc”按钮,然后再次选择CTP中的输入控件并写入该控件。

对于具有上下文菜单的控件也是如此。当用户用鼠标右键单击控件时,上下文菜单很快就可以看到,焦点返回到Excel工作表。

如果用户正在编辑某个单元格,而不是在完成编辑前不能选择CTP中的任何控件,但可以访问功能区按钮。

请指点我现有的解决方案(如果适用)。

+0

在我当前的实现中,我必须在不同的线程上创建任务窗格。这意味着当焦点放在窗格上时,excel没有尝试处理按键。 –

+0

我希望我错过了一些API调用,但感谢评论,我会尝试解决方案。在开发Office插件时,我们当然需要在这里和那里使用一些技巧。 – Beaver

回答

0

@beaver - 当任何窗格窗口中的所有控件都被禁用时,Excel会偷偷地窃取焦点;结束于ALT键按下。为了补救这种情况; ALT然后ESC按键。

在类..

Using System.Windows.Forms; 

....
不会留下任何控制过程后集中

SendKeys.Send("%"); 
SendKeys.SendWait("{ESC}"); 

[可选,但强烈建议有更好的表现]
...
在你的App.config中

<configuration> 
    <appSettings> 
    <add key="SendKeys" value="SendInput"/> 
    </appSettings> 
... 

相关问题