You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForm如何在RichTextBox中正确显示书籍列表信息

解决C# WinForm RichTextBox显示书籍信息的问题

问题原因

你当前代码调用library.GetAllBooks().ToString()显示命名空间,核心原因是:

  1. 若GetAllBooks()返回集合(比如List<Book>),集合默认的ToString()只会输出自身类名(例如System.Collections.Generic.List1[YourNamespace.Book]`);
  2. Book类默认继承自Object,其ToString()默认输出类的完全限定名(命名空间+类名),不会展示自定义字段。

两种可行实现方案

方案1:重写Book类的ToString()方法

在Book类中重写ToString(),自定义书籍信息的输出格式,后续遍历集合时可直接调用:

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }

    // 重写ToString,自定义单本书的信息格式
    public override string ToString()
    {
        return $"《{Title}》 - 作者:{Author}";
    }
}

然后在WinForm代码中拼接所有书籍信息:

var allBooks = library.GetAllBooks();
// 用换行符分隔每本书的信息
richTextBox1.Text = string.Join(Environment.NewLine, allBooks);

方案2:直接遍历集合拼接字段

如果不想修改Book类,可直接遍历书籍集合,手动拼接标题和作者字段:

var allBooks = library.GetAllBooks();
var contentBuilder = new System.Text.StringBuilder();

foreach (var book in allBooks)
{
    // 自定义每行的显示格式
    contentBuilder.AppendLine($"标题:{book.Title},作者:{book.Author}");
}

richTextBox1.Text = contentBuilder.ToString();

进阶:设置RichTextBox文本样式

若需要更复杂的显示效果(比如加粗标题),可利用RichTextBox的选择样式属性:

foreach (var book in allBooks)
{
    // 设置标题为加粗样式
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Bold);
    richTextBox1.AppendText($"《{book.Title}》");
    
    // 恢复默认字体显示作者信息
    richTextBox1.SelectionFont = richTextBox1.Font;
    richTextBox1.AppendLine($" - {book.Author}");
}

内容的提问来源于stack exchange,提问作者Frank Christiansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:50:39