2011-08-11 59 views
4

我有TextBox,它允許只插入數值(過濾),但是當我粘貼複製的文本時,它允許任何種類的符號。如何在粘貼前防止或過濾文本?在Silverlight 4中過濾粘貼

回答

1

你可以任何手動輸入之前備份您的文字,然後在所提供的輸入無效,恢復到以前的文字,像這樣:

 _backupText = string.Empty; 
     doNotPasteTextBox.TextInputStart += (sender, e) => 
               { 
                int textParsed; 
                if(int.TryParse(e.Text,out textParsed)) 
                { 
                 _backupText = doNotPasteTextBox.Text.Insert(doNotPasteTextBox.SelectionStart, e.Text); 
                }else 
                { 
                 e.Handled = true; 
                } 
               }; 

     doNotPasteTextBox.TextChanged += (sender, e) => 
              { 
               int textParsed; 
               int selectionStart = doNotPasteTextBox.SelectionStart; 
               if(!int.TryParse(doNotPasteTextBox.Text, out textParsed)) 
               { 
                doNotPasteTextBox.Text = _backupText; 
               } 
               doNotPasteTextBox.SelectionStart = selectionStart; 
              }; 

我不會推薦trying to capture the control keys或任何東西,因爲當你在Mac或Linux上,那麼你就搞砸了。

調整我的示例,並將其倒入一個新的文本框控件,使其更清潔,但你明白了。

1

您可以使用Clipboard.GetText()來獲取插入到文本框中的文本,但會彈出一條消息,並且用戶必須授予應用程序訪問剪貼板的權限。

如果它對你沒有問題,那麼我會用這個。