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

Visual Studio 2019 WinForms C#中ListBox无法显示交易列表求助

解决WinForms ListBox无法显示Transaction记录的问题

1. 重写Transaction类的ToString()方法

ListBox默认会调用对象的ToString()方法来显示内容,而默认的ToString()只会返回类的完全限定名(比如YourNamespace.Transaction),看起来就像没有显示有效内容。你需要重写这个方法,自定义要展示的交易信息:

public class Transaction
{
    public string TransactionId { get; set; }
    public decimal Amount { get; set; }
    public DateTime CreateTime { get; set; }

    // 重写ToString(),定义ListBox中显示的文本格式
    public override string ToString()
    {
        return $"[{CreateTime:yyyy-MM-dd HH:mm}] 交易ID:{TransactionId} 金额:{Amount:C}";
    }
}

2. 确保正确添加交易对象到ListBox

检查「新增交易」按钮的点击事件代码,确认你是将实例化并赋值完成的Transaction对象添加到ListBox的Items集合,而非空对象或错误类型:

private void btnAddTransaction_Click(object sender, EventArgs e)
{
    // 实例化交易对象并填充数据
    var newTransaction = new Transaction
    {
        TransactionId = Guid.NewGuid().ToString().Substring(0, 6),
        Amount = decimal.Parse(txtAmount.Text),
        CreateTime = DateTime.Now
    };

    // 将对象添加到ListBox
    listBoxTransactions.Items.Add(newTransaction);
}

3. 绑定数据源的正确姿势

如果使用BindingSource或直接绑定列表作为数据源,注意以下两点:

  • 用BindingList<Transaction>代替普通List<Transaction>,它会自动通知ListBox更新内容
  • 避免重复设置DataSource导致的异常

示例代码:

// 窗体级变量,用BindingList存储交易数据
private BindingList<Transaction> _transactionList = new BindingList<Transaction>();

private void Form1_Load(object sender, EventArgs e)
{
    // 初始化绑定
    listBoxTransactions.DataSource = _transactionList;
}

private void btnAddTransaction_Click(object sender, EventArgs e)
{
    var newTrans = new Transaction { /* 填充数据 */ };
    _transactionList.Add(newTrans);
    // 无需手动刷新ListBox,BindingList会自动触发更新
}

4. 可选:设置DisplayMember属性

如果不想重写ToString(),可以直接设置ListBox的DisplayMember属性,指定要显示的Transaction类属性名:

// 在窗体构造函数或Load事件中设置
listBoxTransactions.DisplayMember = "TransactionId"; // 或其他你想展示的属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:50:25