2010-11-02 205 views
1

我在用户控件中用Web浏览器开发了一个Outlook添加(自定义任务窗格)。Outlook添加,文本框中,删除 backspace不起作用

当我在网络浏览器的文本框中写东西时,所有的东西在退格或删除按钮旁边工作良好,我不能使用这些键,我是否错过了一些东西?

回答

2

好吧,我解决了这个问题,

的问题是,在自定义任务窗格并不总是得到fucos从Outlook。

所以,我每次在所有窗格都有“onclick”的时候发出了一个事件,然后强制窗格处于焦点状态。

+0

你究竟是怎么做到的?你可以发布一些代码吗?我有同样的问题,但我没有帮助。 – wpfwannabe 2011-05-19 08:23:06

+0

你能否用一些代码更新你的答案? – Neophile 2016-03-17 16:40:53

0

原来这是一个很容易解决的问题。

只要写

class MyBrowser : WebBrowser {} 

然后使用,而不是.NET一个MyBrowser。

+0

这对我不起作用。 – GreenKiwi 2013-11-14 21:05:10

+0

这是奇怪的。为了确保,我多次尝试了这种方法。它完全没有意义,但仍然没有。 – 2013-11-18 07:21:08

2

我已经晚了几年晚会,但我设法解决这个问题。解决这个问题的最简单方法是确保对输入字段给予适当的关注,所以您需要能够在加载的任何页面上运行您自己的JavaScript。

我的页面上运行的JavaScript是如下(使用jQuery):

$(document).on("click", function (e) { 
    // first let the add-in give focus to our CustomTaskPane 
    window.external.focus(); 
    // then in our web browser give focus to whatever element was clicked on 
    $(e.target).focus(); 
}); 

所述的window.external变量包含来自插件(C#或VB我假定)代码的运行,其被暴露,所以我们可以从网页交互回加载项。

在自定义设置taskpane的的window.external背景下加载代码:聚焦

// event when webBrowser is finished loading document 
private void webBrowser1_DocumentCompleted(object sender,  WebBrowserDocumentCompletedEventArgs e) 
    { 
     // sets context of window.external to functions defined on this context 
     webBrowser1.ObjectForScripting = this; 
    } 

和公共方法:

// can be called by the web browser as window.external.focus() 
public void focus() 
{ 
    this.Focus(); 
} 

这为我工作,我希望它能帮助别人。虽然请注意,如果用户键盘使用选项卡进行导航,但这可能不起作用,但您可以扩展此用例的此代码,或者安全地假定普通Outlook用户将他的手粘在鼠标上。