体检套餐项目解析

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Text
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }
        HealthCheckItem ShenGao, TiZhong, GanGongN;

        //存储所有检查项目
        List<HealthCheckItem> AllItems = new List<HealthCheckItem>();
        //存储与套餐相关的检查项目
        List<HealthCheckItem> items = new List<HealthCheckItem>();
        //保存医院中支持的所有TC,为了绑定左侧的套餐下拉框而编写
        public Dictionary<string, TaoCan> HSet = new Dictionary<string, TaoCan>();

        public void testSet()
        {
            ShenGao = new HealthCheckItem(5, "检查身高", "身高");
            TiZhong = new HealthCheckItem(5, "检查体重", "体重");
            GanGongN = new HealthCheckItem(5, "检查肝功能", "肝功能");
            AllItems.Add(ShenGao);
            AllItems.Add(TiZhong);
            AllItems.Add(GanGongN);
        }
        //构建一个默认的套餐,并且扔到所有套餐(TC)集合中
        public void Tc()
        {
            TaoCan tc = new TaoCan();
            tc.Name = "入学体检";
            tc.Items.Add(ShenGao);
            tc.Items.Add(TiZhong);


            //请选择
            TaoCan tc2 = new TaoCan();
            tc2.Name = "请选择";

            HSet.Add(tc2.Name, tc2);
            HSet.Add(tc.Name, tc);

        }

        //更新套餐检查项目(职责分离)
        private void updateSet(TaoCan set)
        {
            dgvList.DataSource = new BindingList<HealthCheckItem>(set.Items);
        }

        //定义一个标记 判定当前Load事件是否执行完毕
        int flag = 0;
        private void FrmMain_Load(object sender, EventArgs e)
        {
            


            //右侧下拉框
            testSet();
            //左侧
            Tc();
            //所有下拉框中的项目Clear()
            BindingSource source = new BindingSource();
            source.DataSource = HSet.Values;
            cboSets.DisplayMember = "name";
            cboSets.ValueMember = "items";
            cboSets.DataSource = source;
            BindRightDGV();
            Console.WriteLine("");
            flag = 1;
        }

        private void BindRightDGV()
        {

            cboItems.DataSource = new BindingList<HealthCheckItem>(AllItems);
        }

        private void cboSets_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (flag == 1)
            {
                string SetName = cboSets.Text;
                if (SetName == "请选择")
                {
                    HSet[SetName].Items.Clear();
                    updateSet(HSet[SetName]);
                    // dgvList.DataSource = null;
                    lblSetName.Text = "";
                    lblSetPrice.Text = "";
                    return;
                }
                //设置套餐名称

                lblSetName.Text = HSet[SetName].Name;
                HSet[SetName].CalcPrice();
                //设置套餐总价
                lblSetPrice.Text = HSet[SetName].Price.ToString();
                //更新套餐检查项目
                updateSet(HSet[SetName]);
                //设置清楚按钮为可用状态
                btnDelete.Enabled = true;
            }
        }

        private void cboItems_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboItems.Text != "请选择")
            {
                btnAdd.Enabled = true;
            }
            else
            {
                btnAdd.Enabled = false;
            }
        }

        private void btnTaoCanAdd_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtName.Text))
            {
                MessageBox.Show("请选择套餐名称","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                return;
            }
            else
            {
                TaoCan Hch = new TaoCan();
                Hch.Name=txtName.Text;
                HSet.Add(Hch.Name,Hch);
                BindingSource source = new BindingSource();
                source.DataSource = HSet.Values;
                cboSets.DisplayMember = "name";
                cboSets.ValueMember = "items";
                cboSets.DataSource = source;
                MessageBox.Show("成功!");
                //将新加入的套餐默认选中
                cboSets.SelectedIndex = HSet.Count-1;
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            //体检项目的名称
            if (dgvList.SelectedRows.Count>0)
            {
                string name=dgvList.SelectedRows[0].Cells[0].Value.ToString();
            foreach (HealthCheckItem item in HSet[lblSetName.Text].Items)
            {
                if (item.Name==name)
                {
                    HSet[lblSetName.Text].Items.Remove(item);
                    break;
                }
            }
            updateSet(HSet[lblSetName.Text]);
            //价格
            HSet[lblSetName.Text].CalcPrice();
            lblSetPrice.Text = HSet[lblSetName.Text].Price.ToString();
            }

        }

    }

}

1.先创建以下几个类:

套餐类:TaoCan

检查项目类:HealthCheckItem

原文地址:https://www.cnblogs.com/qingzhi/p/4802909.html