1
private void LoadKeys(Dictionary<string,List<string>> dictionary, string FileName)
        {
           string line = System.String.Empty;
           using (StreamReader sr = new StreamReader(keywords))
           {
            while ((line = sr.ReadLine()) != null)
            {
                string[] tokens = line.Split(',');
                dictionary.Add(tokens[0], tokens.Skip(1).ToList());
                richTextBox2.AppendText("Url: " + tokens[0] + " --- " + "Localy KeyWord: " + tokens[1]+Environment.NewLine);
                ColorText(richTextBox2, Color.Red);
            }
           } 
        }

そして関数ColorText:

public void ColorText(RichTextBox box, Color color)
        {
            box.SelectionStart = box.TextLength; box.SelectionLength = 0;
            box.SelectionColor = color;
            box.SelectionColor = box.ForeColor;
        } 

しかし、それは赤で何も着色しませんでした。何も変わっていません。たとえば、tokens[0]とGreentokens [1]のみを例として、赤で色付けできるようにしたいと思います。

どうすればいいですか?

4

3 に答える 3

4
public void ColorText(RichTextBox box, Color color)
        {
            box.Select(start, 5);
            box.SelectionColor = color;
        } 
于 2012-10-12T07:17:17.120 に答える
0

box.SelectionStart = box.TextLength;-コードのこの行は、「ボックスのテキストの最後からテキストの強調表示を開始する」と解釈できます。つまり、テキストの最後の後にテキストを含めることはできないため、テキストを選択しないでください。

box.SelectionLength = 0;-さらに、この行は「0量のテキストを強調表示する」と解釈できます。テキストを選択していないことを二重に確認しました。

選択するテキストをどのように決定するかはわかりませんが、次のようなものを使用します。

        public void ColorSelectedText(RichTextBox textBox, Int32 startPos, Int32 length, Color color)
        {
            textBox.Select(startPos, length);
            textBox.SelectionColor = color;
        } 

テキストボックスオブジェクトと色を渡します。

渡す整数は、マウスカーソルでテキストを強調表示しているかのように考えることができます。

startPosはマウスを下にクリックする場所であり、「長さ」はstartPosとマウスを離す場所の間の文字数になります。

于 2012-10-12T08:04:14.280 に答える