2013-04-14 29 views
2

情況: 表單具有用戶必須鍵入某些文本的文本框。此文本框中有一個KeyPress事件,其中表單的文本屬性更改爲用戶鍵入每個擊鍵的文本。C#KeyPress事件不會將文本框中的最後一個字符複製到表單的文本屬性

下面是文本框的按鍵事件代碼:

private void tbGameTitle_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      this.Text = textBox1.Text; 
     } 

問題: 的最後一個字符的用戶類型不會被複制到窗體的文本。例如:

textBox1.Text = "The War of 1812" 
Form2.Text = "The War of 181" 

的「2」的textBox1.Text「的1812年戰爭」結束不被複制到Form2.Text。

如何獲取整個文本字符串從textBox1.Text複製到Form2.Text?

回答

5

嘗試使用TextChanged事件而不是KeyPress。在使用後者時你太早了,因爲Text屬性在按鍵處理後得到更新。

+0

我剛測試過,效果很好。 +1 – FrostyFire

2

這是因爲KeyPress在字符實際「輸入」textBox1之前被觸發。如果您在鍵入時觀看,則會注意到Form2將始終是textBox1後面的字符。您將需要使用TextChanged事件,該事件在每個更改爲textBox1中的文本後被觸發

+2

KeyUp事件在這裏也適用,因爲這個事件在按鍵被釋放後觸發。 – DragonZero

+1

正確,儘管該事件處理不改變「textBox1」文本的非字符鍵,我們不關心它。 'TextChanged'只會捕獲相關的按鍵。 –

+1

同意了,像向上箭頭,向下箭頭,刪除,輸入等等。 – DragonZero

相關問題