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

C# WinForm应用:如何统计选中相同值的ComboBox数量?

没问题,这个需求在WinForm里实现起来很直观,我给你整理了清晰的思路和可直接复用的代码示例,你可以根据自己的项目调整~

核心实现思路
  1. 先把所有需要统计的ComboBox控件统一放到一个集合里,方便后续遍历操作
  2. 使用字典(Dictionary)来统计每个选中值的出现次数:键是选中的选项文本,值是对应的数量
  3. 最后把统计结果对应赋值到指定的TextBox控件即可
具体代码实现

第一步:准备ComboBox集合

在你的窗体类里先声明一个集合,用来存放所有要统计的ComboBox,然后在窗体加载时初始化这个集合:

using System.Collections.Generic;
using System.Windows.Forms;

public partial class YourForm : Form
{
    // 存储所有需要统计的ComboBox
    private List<ComboBox> _targetComboBoxes;

    public YourForm()
    {
        InitializeComponent();
    }

    private void YourForm_Load(object sender, EventArgs e)
    {
        // 把你项目里的所有目标ComboBox添加到集合中
        _targetComboBoxes = new List<ComboBox>
        {
            comboBox1,
            comboBox2,
            comboBox3,
            // 继续添加其他ComboBox...
        };

        // 这里可以选择用按钮触发统计,或者实时统计(后面会说)
        btnCalculateCounts.Click += BtnCalculateCounts_Click;
    }

第二步:编写统计逻辑并更新TextBox

接下来实现统计方法,这里以按钮点击触发为例:

private void BtnCalculateCounts_Click(object sender, EventArgs e)
    {
        // 初始化统计字典
        var selectionCountDict = new Dictionary<string, int>();

        // 遍历所有ComboBox统计选中项
        foreach (var combo in _targetComboBoxes)
        {
            // 跳过未选中任何选项的情况
            if (combo.SelectedItem == null)
                continue;

            string selectedText = combo.SelectedItem.ToString();
            if (selectionCountDict.ContainsKey(selectedText))
            {
                // 已存在该值,计数+1
                selectionCountDict[selectedText]++;
            }
            else
            {
                // 首次出现该值,初始化为1
                selectionCountDict[selectedText] = 1;
            }
        }

        // 将统计结果赋值到指定TextBox
        // 假设"项1"对应textBox1,"项2"对应textBox2,以此类推
        textBox1.Text = selectionCountDict.TryGetValue("项1", out int count1) ? count1.ToString() : "0";
        textBox2.Text = selectionCountDict.TryGetValue("项2", out int count2) ? count2.ToString() : "0";
        // 如果有更多选项,按同样格式添加即可
    }
}
额外优化:实时统计

如果你希望用户每次切换ComboBox选项时,TextBox能自动更新统计结果,可以给每个ComboBox绑定SelectedIndexChanged事件:

// 在窗体加载的初始化代码里添加事件绑定
private void YourForm_Load(object sender, EventArgs e)
{
    _targetComboBoxes = new List<ComboBox> { comboBox1, comboBox2, comboBox3 };

    // 给每个ComboBox绑定选中变更事件
    foreach (var combo in _targetComboBoxes)
    {
        combo.SelectedIndexChanged += ComboBox_SelectionChanged;
    }
}

// 选中变更时自动更新统计
private void ComboBox_SelectionChanged(object sender, EventArgs e)
{
    // 直接复用之前的统计逻辑,建议把统计代码抽成单独方法
    UpdateSelectionCounts();
}

// 抽成独立方法,方便复用
private void UpdateSelectionCounts()
{
    var selectionCountDict = new Dictionary<string, int>();
    foreach (var combo in _targetComboBoxes)
    {
        if (combo.SelectedItem == null)
            continue;
        string selectedText = combo.SelectedItem.ToString();
        selectionCountDict[selectedText] = selectionCountDict.TryGetValue(selectedText, out int count) ? count + 1 : 1;
    }

    textBox1.Text = selectionCountDict.TryGetValue("项1", out int c1) ? c1.ToString() : "0";
    textBox2.Text = selectionCountDict.TryGetValue("项2", out int c2) ? c2.ToString() : "0";
}

内容的提问来源于stack exchange,提问作者V农 V膬n Hi峄噋

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:48:26