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 这个项目需要以下一个类
每个类的内容如下
1.套餐类
2.检查项目类
原文:http://www.cnblogs.com/zhongmingyuan/p/4802887.html