2010-08-04 30 views
0

我想知道如何將光標從當前文本框移動到上一個文本框。我通過逐個輸入按鍵事件動態創建文本框通過按退格移動到當前文本框

例如,

TextBox1的

TextBox2中

textbox3

假設共有三個文本框現在創建和我的第三個文本框意味着我對textbox3光標,我想將光標移動到TextBox2中或重點放到textbox2進行修改。

我該怎麼辦?請爲此建議適當的代碼。

回答

2

基礎上Giorgi's solution

foreach(var tbox in new[] 
    { 
     tbox0, tbox1, tbox2 
    }) 
{ 
    tbox.KeyPress += (sender,e) => keypressed(sender,e); 
} 

private void keypressed(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)Keys.Back) 
     ((Control)sender).GetNextControl((Control)sender, false).Select(); // .Focus() 
} 
+0

sir, 它是動態創建的文本框,在下一次輸入keypress事件時它會比三個盒子多。 – mahesh 2010-08-04 11:08:38

+0

@mahesh:'var textBox = new TexBox(){TabIndex = ++ i; };' – abatishchev 2010-08-04 11:19:49

+0

thx幫助它會幫助我很多 – mahesh 2010-08-05 06:00:45

1

如果標籤訂單設置正確,您可以使用GetNextControl方法移動查找上一個控件。

+0

sir, 如何解決tab命令在運行時動態創建的文本框請建議。 – mahesh 2010-08-04 11:10:33

+0

on enter keypress event – mahesh 2010-08-04 11:11:12

2

要謹慎,因此不會造成問題的可用性,如使用空格鍵刪除最後一個字母,也將跳轉到以前的控制,這將挫敗任何用戶!

只有跳控制,如果電流控制文本是空的,用戶按下退格鍵:

private void textBox1_KeyUp(object sender, KeyEventArgs e) 
    { 
     if ((e.KeyCode == Keys.Back) & (((Control)sender).Text.Length == 0)) 
     { 
      this.SelectNextControl((Control)sender, false, true, true, true); 
     } 
    } 
1

退格鍵是爲用戶的重要關鍵編輯,不要惹它。按Tab鍵向前移動,Shift + Tab鍵向後移動。您的用戶很可能已經知道這個快捷方式。

+0

非常真實的先生, 我也很熟悉它,但先生你能告訴我,如果用戶大量輸入條目,並突然意識到一些文本條目是錯誤的。然後根據你的建議,他按Shift +選項卡,但上一個文本框中的文本保持不變,並且他必須通過刪除其上的字符來手動修改它。所以先生,引導我。 thx爲您的合作。 – mahesh 2010-08-04 16:05:30

+0

用戶只需點擊不良文字,按退格鍵或根據需要刪除,然後輸入替換文字。你不需要幫忙。嘗試提供幫助將會使用戶更加困難。 – 2010-08-04 16:11:57

+0

thx回覆對我有幫助。 – mahesh 2010-08-05 05:59:47