1

こんにちは、私の問題はこれです私はRichTextBoxを持っていますが、段落の後に「きれいな」スペースを追加したいのですが、インターネットで多くの例を見つけましたが、すべての例は段落だけでなくすべての行を変更します.

private void FormatRTB(byte rule, int space, int x)
    {
        PARAFORMAT fmt = new PARAFORMAT();
        fmt.cbSize = Marshal.SizeOf(fmt);
        fmt.dwMask = PFM_LINESPACING;
        fmt.dyLineSpacing = space;
        fmt.bLineSpacingRule = rule;
        richTextBox1.Select(x, 2);
        SendMessage(new HandleRef(richTextBox1, richTextBox1.Handle),
                     EM_SETPARAFORMAT,
                     SCF_SELECTION,
                     ref fmt
                   );
    }

このコードを追加して \n のみを選択するのは、"\n" の後に段落が開始され、ロジックが悪い場合やコードを追加する必要がある場合は機能しないためです。

while (richTextBox1.Text.IndexOf("\n", k) > 0)
        {
            k = richTextBox1.Text.IndexOf("\n", k);
            setLineFormat(2, 0, k);
            k++;
        }

.

4

2 に答える 2

0

「\n」のすべての出現が実際に別の段落であることが確実な場合は、その後にスペースを追加するだけで済みます。次のように単純なループを使用できます。

for (int i = 0; i < richTextBox1.Text.Length; i++)
{
    if (richTextBox1.Text[i] == '\n')
        richTextBox1.Text.Insert(i + 1, "    ");
}

多くの場合、段落は「\n」と「\r」の両方でマークされているため、代わりに\rを探すことができます

于 2013-08-16T09:26:30.687 に答える