2010-11-02 203 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用戶將他的手粘在鼠標上。