是否有可能知道任何文本框值是否在應用程序中發生了更改。 我有大約30個文本框,我只想運行一部分代碼,如果任何一個文本框的值已經改爲30以外。有沒有辦法我可以知道。文本框值已更改
Q
文本框值已更改
3
A
回答
7
當內容發生變化時,每個文本框將引發事件TextChanged
。但是,這要求您訂閱每個事件。
好消息是,您可以多次使用相同的方法訂閱活動。處理程序有一個參數sender
,您可以使用該參數來確定您的30個文本框中的哪一個實際上引發了該事件。
您還可以使用GotFocus和LostFocus事件來跟蹤實際更改。您需要將原始值存儲在GotFocus
上,然後與LostFocus
上的當前值進行比較。這解決了兩個TextChanged
事件相互抵消的問題。
2
您可以爲每個TextBox的TextChanged事件分配一個事件處理程序。所有這些都可以在代碼中分配給相同的事件處理程序。然後你會知道文本何時改變。您可以在課程中設置一個布爾標誌字段來記錄發生了變化。
1
試試這個。將此代碼添加到加載/構造函數。不需要在XAML中明確指定事件
this.AddHandler(TextBox.TextChangedEvent, new TextChangedEventHandler(TextChanged));
private void TextChanged(object Sender, TextChangedEventArgs e)
{
//ToDO (use sender to identify the actuale text from where it fired }
}
1
這可能是粗糙和準備好的一面,但我是這樣做的。
在構造中,我創建
布爾bChanged = FALSE;
在每個控制(實際上相同的每個)的TextChanged事件處理程序中,我把
bChanged = TRUE;
適當時,我可以做一些處理,並將bChanged設置爲false。
1
你也可以這樣做:
在構造函數:
MyTextBox.TextChanged += new TextChangedEventHandler(TextChanged);
然後將此方法:
private void TextChanged(object Sender, TextChangedEventArgs e){
//Do something
}
相關問題
- 1. Jade:文本框更改值=「...」
- 2. 更改文本框值
- 3. 只獲取值已更改的文本框
- 4. VB.NET文本框已更改,但仍然保存初始值
- 5. 改變多個文本框的值使用AJAX文本框中的值更改
- 6. 使用javascript更改文本框值時更改標籤值
- 7. 如何檢查文本框文本已更改
- 8. 確定哪個文本框已觸發文本更改事件
- 9. 獲取文本框文本,JavaScript已更改
- 10. 文本框更改
- 11. 更改文本框
- 12. 我已將數字綁定到CombBox。我想要更改值組合框和文本框更改值
- 13. 將文本框值更改爲+/- 10
- 14. excel vba根據值更改文本框
- 15. 更改文本框中的存儲值
- 16. 更改選擇框的值文本
- 17. 撿起ASP文本框的更改值
- 18. 更改事件內的文本框值?
- 19. 根據複選框值更改文本
- 20. 防止更改文本框的值
- 21. 從下拉值更改文本框
- 22. JavaScript更改文本框值onchange
- 23. 如何更改文本框的值?
- 24. 動態更改文本框的值?
- 25. 更改文本框中的值問題
- 26. 其他文本框文本更改時更改文本框的文本
- 27. apsx.cs文件中的文本框不會更新已更改的文本
- 28. 更改已禁用複選框的值
- 29. 更改組合框的ListItem文本而不更改其值
- 30. 在更改下拉列表時更改文本框的值
的問題是 「有值改爲」 不「有TextChanged事件觸發「。如果用戶將文本「香蕉」編輯爲「bananaX」,然後按退格,他又回到「香蕉」......並且沒有任何變化。骯髒的檢測從WPF控件丟失... – Jack 2013-02-21 18:56:15
@傑克 - 增加了一個可能的解決方案。 – ChrisF 2013-02-21 22:37:58
如果使用MVVM + Binding,那麼在WPF中沒有簡單的方法來做到這一點,因爲Binding類(它完全可以檢測正在編輯的)不會... – Jack 2013-02-23 08:04:52