2012-05-10 25 views
2

我有一個多行文本框,其中Ctrl + Enter觸發特定的操作。顯然,輸入在文本框中創建一個新行。WPF:轉換Ctrl + Enter在文本框上輸入

現在我想反轉兩個功能,即Ctrl + Enter應該創建一個新行,並且Enter應該觸發我的特定操作。一切正常,除非我需要用Ctrl-Enter創建一個新行。

我試過這個解決方案: How can I programmatically generate keypress events in C#? 但是,它沒有工作,因爲當我提出一個(預覽版)的keydown /上的回車鍵,Ctrl鍵不放,再這樣我剛剛結束了模擬另一個Ctrl鍵 - 在文本框中輸入,不起作用。

任何幫助,將不勝感激。

+0

我剛剛找到另一種方式來做到這一點,但我沒有足夠的信譽來回答我的問題,直到8個小時...... – Odsh

+0

嘿嘿^ ..我贊成你可能有幫助? :) – mdm20

回答

3

這是怎麼了,我終於模擬上的文本框中的「輸入」,即使在Ctrl鍵是向下:

var caretIndex = MyTextBox.CaretIndex; 
MyTextBox.Text = MyTextBox.Text.Insert(caretIndex, "\r"); 
MyTextBox.CaretIndex = caretIndex + 1; 
+1

對於以下任何人,作爲一般的最佳實踐,應該使用'System.Environment.NewLine'而不是'\ r','\ n'或'\ r \ n' – tehDorf

1

如果你想真正模擬一些按鍵,而不僅僅是複製它的功能,你應該使用InputSimulator,這是一個很好的開源庫。 模擬一個Ctrl + Enter會是什麼樣子:

InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.RETURN);