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

C#如何将其他表单的值传入另一表单并添加到带列ListView中

C# 跨窗体传值后写入带列ListView实现方案

前置配置(Form2端)

首先确保Form2的ListView控件完成基础配置:

  • 将ListView的View属性设置为Details,才能显示多列布局
  • 按需求添加对应列,比如需要展示姓名、年龄、手机号,就添加3个对应列,设置好列宽

核心实现逻辑

带列ListView的每一行对应一个ListViewItem对象,第一列的值作为ListViewItem的构造参数传入,后续列的值按顺序添加到SubItems集合中即可。
推荐通过Form2暴露公开方法的方式接收数据,避免直接跨窗体操作控件带来的权限问题和逻辑混乱。

示例代码

Form2 后台代码

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
        // 若未在设计器配置ListView,可取消下方注释代码完成初始化
        // listView1.View = View.Details;
        // listView1.Columns.Add("姓名", 100); // 第二个参数为列宽,单位像素
        // listView1.Columns.Add("年龄", 60);
        // listView1.Columns.Add("联系电话", 150);
    }

    // 自定义带参构造函数:适合每次传值都打开新Form2的场景
    public Form2(string name, string age, string phone) : this()
    {
        AddDataToListView(name, age, phone);
    }

    // 公开方法:接收外部传入的数据,写入ListView
    public void AddDataToListView(string name, string age, string phone)
    {
        // 构造第一列数据
        ListViewItem listItem = new ListViewItem(name);
        // 按列顺序添加后续列数据
        listItem.SubItems.Add(age);
        listItem.SubItems.Add(phone);
        // 将行数据添加到ListView控件
        listView1.Items.Add(listItem);
    }
}

Form1 后台代码

假设Form1有3个输入框txtName、txtAge、txtPhone,和一个触发传值的按钮:

public partial class Form1 : Form
{
    // 全局持有Form2实例:适合同一个Form2多次追加数据的场景
    private Form2 _form2Instance;

    public Form1()
    {
        InitializeComponent();
    }

    private void btnSubmitToForm2_Click(object sender, EventArgs e)
    {
        // 场景1:同一个Form2多次追加数据
        if (_form2Instance == null || _form2Instance.IsDisposed)
        {
            _form2Instance = new Form2();
            _form2Instance.Show();
        }
        _form2Instance.AddDataToListView(txtName.Text, txtAge.Text, txtPhone.Text);

        // 场景2:每次传值打开新的Form2,注释场景1代码,取消下方注释即可
        // Form2 newForm2 = new Form2(txtName.Text, txtAge.Text, txtPhone.Text);
        // newForm2.Show();

        // 可选:传值完成清空输入框
        txtName.Clear();
        txtAge.Clear();
        txtPhone.Clear();
    }
}

注意:SubItems的添加顺序必须和ListView的列顺序完全一致,否则会出现数据错列的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:45:05