2012-10-24 13 views
6

我正在開發一個MS-Word插件,其中我的代碼必須能夠訪問用戶通過鍵盤輸入的字母。如何提高MS字上的事件Keypress

private void ThisDocument_Startup(object sender, System.EventArgs e) 
{ 
    this.SelectionChange += new SelectionEventHandler(ThisDocument_SelectionChange); 
} 

void ThisDocument_SelectionChange(object sender, SelectionEventArgs e) 
{ 
    MessageBox.Show(e.Selection.Text); 
} 

我覺得SelectionChange事件可以給我的文字,但事件不會在按鍵凸起,有沒有什麼辦法來觸發按鍵處的事件?此外,如果有更直接的方法來做到這一點,或者是一個提供功能的開源項目,那將是值得歡迎的。

+1

選擇更改用於「突出顯示文本」時的狀態更改。 (http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.selectionchange(v=vs.80).aspx),尋找類似「KeyUp」,「KeyDown」或「KeyPress」,儘管快速搜索沒有產生任何結果。 –

+1

請參閱http://stackoverflow.com/questions/13000645/capturing-keydown-event-of-ms-word-using-c-sharp –

+0

@PhilPrice,答案表明沒有直接的「KeyUp」或「KeyDown」可以從視覺工作室訪問的事件。我正在使用「SelectionChange」事件作爲解決方法。如果我可以觸發它,我可以捕捉光標處的字符。順便說一句,它已經可以通過箭頭鍵來觸發。無論如何感謝輸入 – Yohannes

回答

5

Microsoft本身不會公開按鍵事件,但有一個解決方法。

我實現了鍵盤與下面鏈接的文章幫助檢查:

http://www.switchonthecode.com/tutorials/winforms-accessing-mouse-and-keyboard-state

這給你一個叫IsKeyDown靜態方法,實施和調用,您可以訂閱委託應該是相當直截了當。

+0

+1謝謝你的回答。我正在考慮使用這種方法。您實施的代碼是否可靠?我的意思是,Office/Word是否會阻礙它,並間歇性地阻止它的工作?謝謝。 – Sabuncu

+0

我不確定,我沒有用它作爲一個單詞插件:) – Soeholm

+0

@Soeholm您提供的鏈接現已停止。 – Jared