1
我正在使用WPF .net 3.5應用程序。阻止文本框中的雙字節字符
我需要創建自己的密碼箱,因爲內置安全問題之一。 新的PasswordwordBox基於常規的TextBox。
一切工作正常,只有在WPF密碼箱雙字節字符被阻止,並且我想將此行爲也添加到我的新密碼箱中。
我該怎麼做?
我正在使用WPF .net 3.5應用程序。阻止文本框中的雙字節字符
我需要創建自己的密碼箱,因爲內置安全問題之一。 新的PasswordwordBox基於常規的TextBox。
一切工作正常,只有在WPF密碼箱雙字節字符被阻止,並且我想將此行爲也添加到我的新密碼箱中。
我該怎麼做?
由於您實際上想阻止IME顯示字符,因此應該禁用IME作爲密碼框,而不是試圖阻止具有高代碼點的字符。
要禁用某個WPF文本框的輸入法使用:InputMethod.SetIsInputMethodEnabled(myTextBox, false)
。
什麼是雙字節字符,爲什麼要阻止它們?爲什麼一個基於TextBox的密碼框比內置的密碼盒更安全? – CodesInChaos
很多問題:)在中文中,爲了表示一個字符,需要2個字節,所以當您按下keyborad中的某個鍵時,會出現一個小窗口,其中包含要選擇的字符數(這意味着如果按例如'G'可能意味着多於一個字符)。這對於密碼箱來說是不可接受的,因爲那時有人可以看到你選擇的密鑰是什麼。 – user844541
在這種情況下,您應該阻止IME,而不是具有較高代碼點的字符。有很多字符的代碼點高於255,並且使用普通鍵輸入。順便說一句,因爲.net使用UTF-16處理所有事情(16位'char's),每個字符至少需要2個字節(少數幾個需要4個字節)。所以多字節字符分類不再有用了。 – CodesInChaos