[英]Richtextbox disable unrenderable characters
我有一個帶有RichTextBox
的C#WinForms應用程序。 此文本框將包含一個由所有Unicode字符隨機生成的字符串(或至少盡可能多的字符串)。 問題是,它無法顯示某些字符。 當我使用斷點等檢查VS時,字符是正確的,因此這只是一個顯示問題-參見圖片。 有什么方法可以使文本框正確顯示這些字符,或者在甚至不生成代碼的情況下對其進行過濾?
這是我用於生成的代碼(現在生成所有代碼,以后將是一個隨機數)
string key = "";
for (int i = 1; i <= length; i++)
{
key += (char)i;
}
這是圖像在文本框中的外觀:
這些空白方塊實際上是控制 (和其他)字符,實際上無法以有意義的方式顯示,例如字母和數字,例如null
字符,制表符,“傳輸結束”等。
您可以使用Char
類中的一些方法將結果限制為可打印的Char
:
string key = "";
for (int i = 1; i <= length; i++)
{
var c = (char)i;
if (Char.IsPunctuation(c) || Char.IsLetterOrDigit(c))
key += c;
}
這不是完美的。 仍然有一些無法打印的字符,但遠遠少於您的屏幕截圖。
我可能也會嘗試避免所有這些字符串串聯。 以下將創建一個字符數組,然后僅創建一個字符串,而不是創建"length"
個字符串。
var key = new string(Enumerable.Range(1, length)
.Select(i => (char)i)
.Where(c => Char.IsPunctuation(c)
|| Char.IsLetterOrDigit(c))
.ToArray());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.