VSTO AddIn for Excel - 如何防止自定义任务窗格失去焦点?

时间:2015-12-04 09:09:04

标签: c# excel vsto customtaskpane

我为MS Excel创建了一个简单的AddIn,但是自定义任务窗格出现了问题。

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

我可以阻止此行为吗?

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

具有上下文菜单的控件也会发生同样的情况。当用户用鼠标右键单击控件时,上下文菜单很快就会显示,焦点将返回到Excel工作表。

如果用户正在主动编辑某个单元格而不是在完成编辑之前无法在CTP中选择这两个控件,但可以访问功能区按钮。

如果适用,请指出现有的解决方案。

1 个答案:

答案 0 :(得分:0)

@beaver - 当在任何Pane窗口上禁用所有控件时,Excel秘密窃取焦点;按下 ALT 键结束。纠正这种情况; ALT 然后 ESC 按键。

在课堂上..

Using System.Windows.Forms;

....
在没有控制措施的程序之后

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

[可选但强烈推荐以获得更好的性能]
....
在您的App.config中

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