2013-07-25 27 views
0

使用Backspace鍵我使用轉到下一個和以前的控制下面的代碼在Windows窗體NextControl焦點輸入和以前的文本框

if (e.KeyCode == Keys.Enter)//Next 
{ 
    this.SelectNextControl(this.ActiveControl, true, true, true, true); 
} 
if (e.KeyCode == Keys.Back)//Previous 
{ 
    this.SelectNextControl(this.ActiveControl, false, true, true, true); 
} 

的問題

if (e.KeyCode == Keys.Back) 

如果電流控制是TextBox並且用戶嘗試使用退格鍵輸入並刪除一個單詞,那時這將工作並將焦點設置到下一個控件。

如何防止此事件當文本框有一些值? 而且它應該適用於ComboBox和其他控件

+0

用if環繞它if(string.IsNullOrWhitespace(textbox.Text))' – wudzik

+0

if if一個文本框意味着你的答案是正確的,但形式有更多數量的文本框@wudzik – Suresh

+0

請參閱我的答案。更新它適用於所有文本框。 –

回答

0

大多數人使用反向選項卡以贏回形式。但是如果你仍然想通過後退按鈕來完成。

這鱈魚會幫助你。你永遠不會失去你最小的字符。

if(e.KeyCode==Keys.Back) 
      { 
       if(textBox1.Text.Trim().Length==0){ 
       this.SelectNextControl(this.ActiveControl, false, true, true, true); 
       } 
      } 

我很高興能幫到你。歡迎您的致謝

+0

我的問題是,如果用戶嘗試在文本框中鍵入「好」,但有時它會變成「godo」,所以他嘗試刪除使用退格鍵,以便不需要此事件,如果文本框爲空,則只有此事件必須工作 – Suresh

+1

我只是編輯我的答案。現在這隻會在文本框爲空時工作 –

+0

「textbox1.text」中的問題,因爲我們不能指定它的文本框1,因爲更多的文本框在那裏@sourabh devpura – Suresh

1

另一個更新,可能不是很好,但工程。我建議創建一個方法:

public void checkKey(object sender) 
{ 
    KeyEventArgs a = new KeyEventArgs(Keys.Back); 
    if (sender.GetType().Name == "TextBox") 
    { 
     TextBox tb = (TextBox)sender; 
     if ((a.KeyCode == Keys.Back && String.IsNullOrWhiteSpace(tb.Text))) 
     { 
      this.SelectNextControl(this.ActiveControl, false, true, true, true); 
     } 
    } 
} 

,然後在所有的文本框框TextChanged事件 呼叫checkKey(sender);

如果您需要添加控件,只需添加它if條件。

您正在使用的檢查,如果上按下一個鍵,而不是在文本框事件。

+0

如果文本框是在groupbox這將工作? @luame Ludik – Suresh

+0

我懷疑它,需要一些修改來做到這一點。 –

+0

但是如何?@Luame Ludik – Suresh

0

OK,然後先創建一個新的功能

public TextBoxBackEvent(TextBox tb,Form form){ 
       if(tb.Text.Trim().Length==0){ 
       form.SelectNextControl(form, false, true, true, true); 
} 

現在使用在任何地方這個功能在你的應用

TextBoxBackEvent(textbox,this); 

,它就能準確巫婆你想

+0

「文本框」在這個操作中意味着什麼。它會檢查所有文本框 – Suresh

+2

這是文本框對象。我分鐘你可以通過任何文本框在這個功能 –