16

ここには「テキストを太字にする方法」に関する質問がたくさんあることは知っていますが、どの回答も役に立ちません。実行時にリッチ テキスト ボックスが作成されている可能性があると思います。

チャット クライアントを作成しているので、行に分割されたリッチ テキスト ボックスがあり、メッセージは次のようになります: {Name}: {Message} \r\n

名前を太字にしたいのですが、多くのコード例を試しましたが、これは私がそれを機能させるのに最も近いものです:

int length = textBox.Text.Length;
textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\r\n";
textBox.Select(length, roomChatMessage.from.Length);
textBox.SelectionFont = new Font(textBox.Font, FontStyle.Bold);

最初のメッセージは、問題なく動作します。名前は太字になっています。しかし、2 番目のメッセージを追加すると、2 回目のラウンドで開始インデックス (この例では 37) を選択しているにもかかわらず、すべてが太字になり、過去のメッセージもすべて太字になります!

これを引き起こす原因について何か考えはありますか?前もって感謝します!

4

6 に答える 6

19
 ObjRichTextBox.SelectionFont = new Font(ObjRichTextBox.Font, FontStyle.Bold);

 ObjRichTextBox.AppendText("BOLD TEXT APPEARS HERE");

 ObjRichTextBox.SelectionFont = new Font(ObjRichTextBox.Font, FontStyle.Regular);

 ObjRichTextBox.AppendText("REGULAR TEXT APPEARS HERE");

お役に立てれば :)

于 2013-11-28T11:58:01.313 に答える
16

ここに私が一度使用したいくつかのコードがあります:

var sb = new StringBuilder();
        sb.Append(@"{\rtf1\ansi");
        sb.Append(@"\b Name: \b0 ");
        sb.Append((txtFirstName.Text);
        sb.Append(@" \line ");
        sb.Append(@"\b DOB: \b0 ");
        sb.Append(txtDOBMonth.Text);
        sb.Append(@" \line ");
        sb.Append(@"\b ID Number: \b0 ");
        sb.Append(txtIdNumber.Text);
        sb.Append(@" \line \line ");
        sb.Append(@"}");

richTextBox.Rtf = sb.ToString();

@"\rtf1\ansi" を追加すると、\b と \b0 を使用して文字列内で太字を宣言できます。そして \line は新しい行を作成します。下線などを付けることもできます。プロパティを適用するよりも、このように文字列を作成する方が簡単であることがわかりました。

于 2013-06-24T20:43:39.727 に答える
11

この行は問題です:

textBox.Text += roomChatMessage.from + ": " + roomChatMessage.text + "\r\n";

フォーマットとテキストをこの新しいバージョンの文字列に置き換えており、おそらく最後の更新から太字フォントを選択しています。

代わりに AppendText を使用してみてください。

textBox.AppendText(roomChatMessage.from + ": " + roomChatMessage.text + "\r\n");
于 2013-06-24T20:48:28.500 に答える
2

ここで述べたように、この種のアクションを実行するときは、RichTextBox.Rtf プロパティを使用する方が簡単かもしれません。

MSDN: コード: RichTextBox コントロールで文字を太字にフォーマットする (Visual C#)

テキスト ボックスの内容が大きくなるにつれて、選択エンティティの処理が煩雑になる可能性があります。

于 2013-06-24T20:43:04.500 に答える