簡體   English   中英

Richtextbox禁用不可渲染的字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM