我想只允許一個字符的一個實例按順序出現在文本框中。換句話說,我想阻止用戶在我的文本框中輸入連續的重複字符。例如,如果我要製作一個計算器程序,我想防止用戶意外地輸入((
而不是(
。只允許輸入一個字符的實例C#
回答
您可以檢測文本框的keydown事件。並且在這種情況下,你檢查最後和倒數第二個字符,看它是否相同。如果相同,則可以刪除字符串的最後一個字符。
但請記住,當用戶將整個字符串粘貼到文本框時,上述方法有問題。
這與我想要的非常接近,但是是的,它會更好地檢測某些值的重複值,而不會將其作爲輸入的最後一個字符。 – Jeremy11232
將字符串拆分爲單個字符。定義一個空數組uniqueChars。定義一個數組singleOnly。對字符串中的每個字符運行一個foreach循環。在循環中,檢查字符是否已經存在於唯一的字符數組中,如果不是,檢查它是否在singleOnly數組中。如果兩個條件均滿足,則將其添加到uniqueChars數組中。當你遇到重複的時候(已經在uniqueChars數組中,在你定義的角色中檢查dupe),刪除它。然後重新組合字符串並使用它。非常低效,但會做到這一點。編輯:其實列表可能在這裏更好。 – VSO
對於任何類似文本框的對象,該函數看起來都是一樣的,但當然要附加的事件會有所不同。假設的WinForms文本框,你會附加到TextChanged事件(即mytextbox.TextChanged = mytextbox_TextChanged),該函數將類似於下面的一個:
private void mytextbox_TextChanged(object sender, EventArgs e)
{
if (mytextbox.Text.Length < 2) { return; }
var stringToCheck = mytextbox.Text;
for (var i = 1; i <= stringToCheck.Length-1; i += 1)
{
if (stringToCheck[i].Equals(stringToCheck[i-1])
{
mytextbox.Text = stringToCheck.Remove(i, 1);
// Next two lines put cursor at end of textbox instead of beginning
mytextbox.SelectionStart = mytextbox.Text.Length;
mytextbox.SelectionLength = 0;
}
}
}
- 1. 離子輸入只允許一次輸入一個字符
- 2. 只允許一個頁面的實例
- 3. 輸入允許數字和只有一個字母/符號
- 4. 只允許輸入字母
- 5. 只允許數字輸入
- 6. 只允許一個python腳本實例?
- 7. 只允許輸入一次數字
- 8. 限制只允許10個字符串「用戶名」的實例
- 9. 只允許8個字符
- 10. Angular2 - 只允許在輸入中輸入Alpha字符
- 11. 只允許一個查詢字符串
- 12. 只允許一個實例字段但需要更多?
- 13. 允許小數點/句點輸入字段允許的字符
- 14. 輸入類型號只允許輸入2個數字
- 15. UITextField只允許英文字母輸入
- 16. AngularJS:只允許數字作爲輸入
- 17. 如何只允許輸入字母?
- 18. 只允許數字字符
- 19. Android - 我怎麼只允許一個MediaPlayer的實例一次玩?
- 20. 如何只允許大寫字母輸入到一個變量
- 21. 只允許一個python腳本的1個實例
- 22. axwindowsmediaplayer的多個實例,只有一個允許全屏模式
- 23. 二維輸入只允許第一行
- 24. 輸入文本框字段只允許字符不允許數字,但允許空間?
- 25. primefaces inputText輸入字符串,但只允許數字
- 26. Python輸入允許整數和一個字母字符
- 27. 如何清除SAPUI5輸入字段只允許幫助輸入值允許?
- 28. 輸入文本只允許3特定的字符
- 29. 只允許登錄網站的用戶的一個實例
- 30. Windows服務 - 只有一個實例,以允許一次
有趣的問題,我期待着答案 - 不能立即想到一個優雅的解決方案。 – VSO
@VSO請澄清你認爲這個問題是關於什麼的,也考慮澄清文本框和數組拆分之間的關系。 –
一個計算工具,做5 ++ 5沒有意義,5 + 5沒有意義 – Jeremy11232