2013-09-05 43 views
2

我在一個項目上工作。我有文本框和TextChanged事件,我將文本更改爲upperCaseTextChanged事件如何確定發生了什麼變化

txt.ToUpper();

之後,selectionStart從頭開始。我將其更改爲textbox.text.length。

如何確定更改?我想將selectionStart移動到用戶在文本中進行更改的位置。

回答

0

將以前的文本存儲在變量中,例如previousVariable,用null初始化。

string prevVal = null; 
private void txtSel_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    if(prevVal == null) 
    { 
     prevVal = txtSel.Text; 
    } 
    else 
    { 
     for(int i = 0; i < txtSel.Text.length; i++) 
     { 
      if(txtSel.Text.Substring(i, 1) != prevVal.Substring(i, 1)) 
      { 
       txtSel.SelectionStart = i+1; 
       break; 
      } 
     } 
    } 
} 

嘗試在選擇更改上使用上面的代碼。

+0

這真的很脆弱。 (例如,粘貼時)。當文本剛剛添加完時,它也會中斷。 – Ryan

+0

我也想到了這一點,但我有每頁3-20文本框。 – eomer

+0

對不起。但是我沒有把代碼粘貼到這裏寫下來...... :)沒有看到指向代碼段的光標出錯了。感謝您的更正:) – Anobik

相關問題