经理评分

一、首先实现主界面员工信息维护。
1.关键代码,用list绑定datagridview
Datagridview 对象.Datasoure=list 对象;
2.当list数据经过增删改,需要转正
datagridview.datasoure=new bindinglist<T>(mylist)
3.保存父窗体的引用
public frmmain frmparent{get;set;}
(一)在父窗体load事件里赋值

public List<se> ss = new List<se>();

        private void Frmmian_Load(object sender, EventArgs e)
        {
           //实例化对象,给他们初始值
            se x = new se();
            x.Id = 1;
            x.Name = "店小一";
            x.Age = 3;
            x.sex = "";

            se x1 = new se();
            x1.Id = 2;
            x1.Name = "大运";
            x1.Age = 23;
            x1.sex = "";
            ss.Add(x);
            ss.Add(x1);
            //绑定dataGridView数据
            dataGridView1.DataSource = new BindingList<se>(ss);

        }

二、增加员工
关键代码:
   this.frmparent.bindgrid(frmparent.ss);      //刷新父窗体
  // bindgrid方法在父窗体:

//public void bindgrid(List<se> ss)
        {
            //刷新datagridview数据
            this.dataGridView1.DataSource = new BindingList<se>(ss);
        }
//重新new员工类se,当前窗体控件里对应的值分别传到新建的员工类里。加if判断
是男是女,根据当前新new的工号循坏判断总的是否有相同的,如果有则提示相同
  try
            {
                se pr = new se();
                pr.Id = Convert.ToInt32(this.txtid.Text.Trim());
                pr.Age = Int32.Parse(this.txtage.Text.Trim());
                pr.Name = this.txtname.Text.Trim();
                if (this.txtsex.SelectedItem.ToString() == "")
                {
                    pr.sex = "";
                }
                else
                {
                    pr.sex = "";
                }
                foreach (se item in frmparent.ss)
                {          //员工类    父窗体里的数据
                    if (item.Id == pr.Id)
                    {
                        MessageBox.Show("此工号已存在");
                        return;
                    }
                }
                frmparent.ss.Add(pr);
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("出错!" + ex.Message);
            }
            finally 
            {
                this.frmparent.bindgrid(frmparent.ss);      
    //刷新父窗体代码      
            
            }

三、实现删除功能
//获取当前选中的,通过id删除

 private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.dataGridView1.SelectedRows.Count > 0)
            {
                DialogResult choice = MessageBox.Show("确定要删除吗?", "提示", MessageBoxButtons.OKCancel);
                if (choice == DialogResult.OK)
                {
                    string id = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//拿到选中的员工号进行删除
                    for (int i = 0; i < ss.Count; i++)
                    {
                        if (ss[i].Id.ToString() == id)
                        {
                            //执行删除操作
                            ss.Remove(ss[i]);
                            //刷新DataGridView
                            bindgrid(ss);
                            MessageBox.Show("删除成功!");
                        }
                    }
                }
                else
                {
                    MessageBox.Show("请选择一行!");
                    return;

四、签到签退
首先定义record类,里面保存签退签到时间,工号以及员工姓名
主窗体里,先判断是否选中,确保是否签到过,
如果签到,获取新的名字以及时间

private Dictionary<string, Record> rec = new Dictionary<string, Record>();
        private void 签到ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //判断是否选中一行
            if (this.dataGridView1.SelectedRows.Count != 1)
            {
                MessageBox.Show("请选中一行!");
                return;
            }
            string workNo = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            //遍历Key值
            foreach (string item in rec.Keys)
            {
                if (workNo == item)
                {
                    MessageBox.Show("您已经签到过!");
                    return;
                }
            }
            Record record = new Record();

            record.Id = workNo;//id号

            record.Name = dataGridView1.CurrentRow.Cells[1].Value.ToString();//获取选中的姓名
            record.Intime = DateTime.Now;//当前的时间
            this.rec.Add(record.Id, record);//添加到记录里
            MessageBox.Show("签到成功!");

        }
签退:

            if (this.dataGridView1.SelectedRows.Count != 1)
            {
                MessageBox.Show("请选择一行!");
                return;
            }
            string ID = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            bool isOut = false;//标识是否已经签到过
            foreach (string item in rec.Keys)
            {
                if (item == ID)
                {
                    this.rec[item].Outtime = DateTime.Now;
                    MessageBox.Show("签退成功!");
                    isOut = true;
                    break;
                }
            }


            if (!isOut)
            {
                MessageBox.Show("很抱歉,尚未签到!");
            }

最后绑定数据:

public Frmmian frmparent { get; set; }
        public void show { 
            BindingSource bs = new BindingSource();
            bs.DataSource = FrmParent.dic.Values;
         this.dataGridView1.DataSource = bs;
                }
            }

        }
原文地址:https://www.cnblogs.com/yvsheng123/p/8726829.html