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

从Main.cs向Takenshows.cs传参填充ListView控件失败排查

修复ListView构造函数传参后为空的问题

常见问题点及修复步骤

1. 构造函数未正确保存传入参数

如果Takenshows窗体的构造函数仅接收参数却未赋值给类成员变量,Load事件中自然无法获取到数据。

修复代码示例:

// Takenshows.cs
public class Takenshows : Form
{
    // 定义成员变量存储传入的数据
    private List<YourDataModel> _showData;

    // 构造函数接收参数并保存
    public Takenshows(List<YourDataModel> showData)
    {
        InitializeComponent();
        // 关键:将传入参数赋值给成员变量
        _showData = showData;
    }

    private void Takenshows_Load(object sender, EventArgs e)
    {
        PopulateListView();
    }

    private void PopulateListView()
    {
        listView1.Items.Clear();

        // 提前判断数据是否为空
        if (_showData == null || _showData.Count == 0)
            return;

        // 确保ListView为Details视图(多列显示需此设置)
        listView1.View = View.Details;

        // 动态添加列(若设计时未配置)
        if (listView1.Columns.Count == 0)
        {
            listView1.Columns.Add("节目名称", 120);
            listView1.Columns.Add("时长", 80);
            // 根据你的数据模型添加对应列
        }

        // 遍历数据填充ListView
        foreach (var show in _showData)
        {
            ListViewItem item = new ListViewItem(show.Name);
            item.SubItems.Add(show.Duration.ToString());
            listView1.Items.Add(item);
        }
    }
}

2. Load事件未绑定到方法

如果设计时未将Load事件关联到Takenshows_Load方法,填充逻辑根本不会执行。

检查/修复:

  • 打开Takenshows窗体设计器,选中窗体,在属性窗口的事件列表中确认Load事件已绑定到Takenshows_Load。
  • 或在构造函数中手动注册事件:
public Takenshows(List<YourDataModel> showData)
{
    InitializeComponent();
    _showData = showData;
    // 手动绑定Load事件
    this.Load += Takenshows_Load;
}

3. Main.cs中传递的参数本身为空

检查Main.cs中要传递的数据是否真的有内容,避免传递空列表:

// Main.cs按钮点击事件
private void btnOpenTakenshows_Click(object sender, EventArgs e)
{
    List<YourDataModel> dataList = GetShowData();
    // 提前校验数据
    if (dataList == null || dataList.Count == 0)
    {
        MessageBox.Show("无数据可传递");
        return;
    }
    Takenshows takenshowsForm = new Takenshows(dataList);
    takenshowsForm.Show();
}

4. ListView视图模式错误

若ListView的View属性不是Details,添加的子项不会显示,看起来像是空列表。填充前确保设置listView1.View = View.Details,或在设计器中提前配置。

5. 强制刷新ListView(可选)

若填充后UI未更新,可在PopulateListView方法末尾添加刷新:

listView1.Refresh();

内容的提问来源于stack exchange,提问作者Francisco J A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:25:24