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

WinForm中如何获取多层嵌套TabControl下DataGridView的内容?

WinForm多层TabControl下DataGridView数据获取方案

原代码存在的问题

你的循环逻辑有两个明显的问题:

  • 第二层循环遍历tbp.Controls得到的item可能不是TabControl,直接遍历item.Controls并强制转为TabPage会触发类型转换错误
  • 最内层循环得到的dgv是Control类型,没有判断它是否真的是DataGridView,可能会处理到其他控件

修正后的遍历代码

先做类型判断,确保只处理目标控件:

foreach (TabPage mainTabPage in tabControl_X.TabPages)
{
    // 找到当前主TabPage里的TabControl
    var subTabControl = mainTabPage.Controls.OfType<TabControl>().FirstOrDefault();
    if (subTabControl == null) continue;

    foreach (TabPage subTabPage in subTabControl.TabPages)
    {
        // 找到当前子TabPage里的DataGridView
        var dgv = subTabPage.Controls.OfType<DataGridView>().FirstOrDefault();
        if (dgv == null) continue;

        // 在这里处理DataGridView的数据
        GetDgvData(dgv);
    }
}

获取DataGridView数据的两种常用方式

方式1:直接遍历行和单元格(适用于未绑定数据源的情况)

void GetDgvData(DataGridView dgv)
{
    // 遍历每一行
    foreach (DataGridViewRow row in dgv.Rows)
    {
        // 跳过新行(如果允许用户添加行)
        if (row.IsNewRow) continue;

        // 遍历该行的每个单元格
        foreach (DataGridViewCell cell in row.Cells)
        {
            // 获取单元格值,注意处理空值
            var cellValue = cell.Value ?? string.Empty;
            // 这里可以根据需求存储或处理cellValue
            Console.WriteLine($"单元格值:{cellValue}");
        }
    }
}

方式2:直接获取绑定的数据源(适用于已绑定DataTable/BindingSource的情况)

如果你的DataGridView是绑定了DataTable或BindingSource,可以直接取数据源,效率更高:

void GetDgvData(DataGridView dgv)
{
    // 情况1:绑定的是DataTable
    if (dgv.DataSource is DataTable dt)
    {
        // 直接操作DataTable,比如转成List或遍历行
        foreach (DataRow dr in dt.Rows)
        {
            var column1Value = dr["ColumnName1"] ?? string.Empty;
            var column2Value = dr["ColumnName2"] ?? string.Empty;
            // 处理数据
        }
    }

    // 情况2:绑定的是BindingSource
    else if (dgv.DataSource is BindingSource bs && bs.DataSource is DataTable dt2)
    {
        foreach (DataRow dr in dt2.Rows)
        {
            // 同样处理数据
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:32:48