Newer
Older
IRIS_COLLECT / IOM_cs / FormMain.cs
yangqianqian on 29 Dec 2020 94 KB first
//*****************************************************************************
//
//   中国航天科工集团第二研究院
//    北京无线电计量测试研究所
//  计量与校准国防科技重点实验室
//
// 项目名称: 双目虹膜信息综合管理平台
//
//  配合SY望远镜式双目注册设备使用
//
//*****************************************************************************
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Reflection;
using System.Diagnostics;
using IOM_cs.insertForm.service;
using System.Web.Script.Serialization;
using IOM_cs.insertForm.data.dto;
using IOM_cs.irisDb.model;
using IOM_cs.irisDb.service;
//using IOM_cs.irisDb.service.mySqlImpl;
using IOM_cs.insertForm.service.impl;
using IOM_cs.irisDb;
using System.Threading;
using SuperWebSocket;
using System.Web;
using WebSocketSharp;
using System.Data;
using IOM_cs.insertForm.sysSetting;
using ImageFormatter;
using IAiCamIrisLib;
using Newtonsoft.Json;

namespace IOM_cs
{
    public delegate void Handled1();

    public partial class FormMain : Form
    {

        #region 成员变量        
        private FormLogin formLogin;  //登陆界面
        public static User user;
        private iCamIrisClass m_iCamIrisLib = new iCamIrisClass();
        public static FormMain formMain = null;
        public static Person person = new Person(); //sys_person表实体
        public static IrisData irisData = new IrisData(); // iris_data表实体
        public static bool devInited = false; // 虹膜采集设备初始化成功标识
        private bool cardReaderInited = false; // 身份证读卡器初始化成功标识
        //private iCamIrisClass m_iCamIrisClass = new iCamIrisClass(); // 编码类
        private Point mouseOff; // 鼠标移动位置变量
        private bool leftFlag; // 标签是否为左键
        private bool isCaptureForce; // 是否强制采集标识
        private bool isICSConnected=false;// 是否与ics建立连接标识
        public static IrisCodeListMgr m_CodeListMgr = new IrisCodeListMgr();  /* 虹膜匹配识别控制类 */
        //private Thread initDevThread;
        public static IInsertService insertService = new InsertImpl();
        public CtrlDept ctrlDept = new CtrlDept();

        private bool btn_collectInfoClick = true;
        private bool btn_collectListClick = false;
        private bool btn_settinClick = false;
        private bool btn_recognitionClick = false;
        private bool btn_writeDataClick = false;
        private string deptId = "";
        private bool isCapturing = false;

        public static string deviceType="1";// 采集设备类型
        public static string eyeType = "3";//采集类型

        object hmzp_zy = null;//左眼虹膜图片base64编码
        object hmzp_yy = null;//右眼虹膜图片base64编码

        IPersonService iPersonService = (IPersonService)DbService.getEntity("IPersonService");
        IRecognitionService iRecognitionService = (IRecognitionService)DbService.getEntity("IRecognitionService");

        #endregion 成员变量

        

        public FormMain()
        {
            try
            {
                formMain = this;

                user = FormLogin.user;                

                // 初始化控件
                InitializeComponent();

                // 设置双缓冲
                SetStyle(ControlStyles.UserPaint, true);
                SetStyle(ControlStyles.AllPaintingInWmPaint, true);
                SetStyle(ControlStyles.OptimizedDoubleBuffer, true);

                // 跨线程访问控件
                CheckForIllegalCrossThreadCalls = false;

                axIrisDevCtrl1.Height = 150;
                axIrisDevCtrl1.Width = 420;                
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, "注册界面初始化错误:" + ex.Message);
            }

        }

        private void FormMain_Load(object sender, EventArgs e)
        {
            this.FormClosing += new FormClosingEventHandler(this.Form1_FormClosing);

            label_wellcome.Text = "欢迎您," + FormLogin.user.Name + "!";

            btn_collectInfo.Back = ColorTranslator.FromHtml("#56a3f2");

            tabControl_Main.Location = new Point(24, 28);
            tabControl_Main.SelectedIndex = 0;

            ConfigHelper.GetAppConfig("sqlType");
            deviceType = ConfigHelper.GetAppConfig("deviceType");
            if (deviceType == "1")
            {
                btn_captureForce.Enabled = false;
            }
            if (ConfigHelper.GetAppConfig("systemType") == "1")
            {
                btn_writeData.Visible = true;
                label_cost.Visible = true;
            }
            else
            {
                btn_writeData.Visible = false;
                label_cost.Visible = false;
            }
        }

        private void FormMain_Shown(object sender, EventArgs e)
        {
            // 初始化下拉框数据
            initComboBoxList();
            
            // 初始化部分输入框内容 
            initInputItems();
            treeView_dept.SelectedNode = null;
            comboBox_nation.SelectedIndex = -1;

            // 解决初始化花屏问题,等窗体显示完再显示自定义控件
            btn_collectInfo.Visible = true;
            btn_collectList.Visible = true;
            btn_setting.Visible = true;
            btn_recognition.Visible = true;
        }


        #region 导入库文件

        // 身份证读卡
        [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
        static extern int SDT_OpenPort(int iPort);
        [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
        static extern int SDT_ClosePort(int iPort);
        [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
        static extern int SDT_StartFindIDCard(int iPort, byte[] pucManaInfo, int iIfOpen);
        [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
        static extern int SDT_SelectIDCard(int iPort, byte[] pucManaMsg, int iIfOpen);
        [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
        static extern int SDT_ReadBaseMsg(int iPort, byte[] pucCHMsg, ref UInt32 puiCHMsgLen, byte[] pucPHMsg, ref UInt32 puiPHMsgLen, int iIfOpen);
        [DllImport("WltRS.dll", CallingConvention = CallingConvention.StdCall)]
        static extern int GetBmp(string Wlt_File, int intf);

        #endregion


        #region 初始化控件及值

        // 初始化各个下拉列表
        private void initComboBoxList()
        {
            ctrlDept.loadData();

            // 民族
            var items = new System.Collections.ArrayList(Enum.GetValues(typeof(nation))).ToArray();
            comboBox_nation.Items.Clear();
            comboBox_nation.Items.AddRange(items);             

            // 采集类型(双眼、左眼、右眼)
            items = new System.Collections.ArrayList(Enum.GetValues(typeof(collType))).ToArray();
            comboBox_collType.Items.Clear();
            comboBox_collType.Items.AddRange(items);

        }

        // 设置部分输入项初始值
        private void initInputItems()
        {
            // 采集类型
            comboBox_collType.SelectedItem = collType.双眼; 
            txt_collType.Text = comboBox_collType.SelectedItem.ToString(); 

            // 民族
            comboBox_nation.SelectedItem = nation.汉族;
        }
       
        // 重置第一步页面内容
        private void resetStep1()
        {
            txt_name.Clear();
            radio_female.Checked = false; radio_male.Checked = false;
            comboBox_nation.SelectedIndex = -1;
            txt_addr.Clear();

            picker_birthday.Text = "";
            txt_birthday.Clear();

            txt_IDCardNo.Clear();
            txt_remarks.Clear();

            treeView_dept.SelectedNode = null;
            txt_dept.Text = "";
            txt_cerAuth.Text = "";

            pic_IDFace.Image = null;


            btn_nextStep12.Enabled = true;

            txt_dept.Clear();
            txt_nation.Clear();
            txt_staffNo.Clear();
            treeView_dept.Visible = false;
        }
                

        //重置第三步页面内容
        private void resetStep3()
        {
            comboBox_collType.SelectedItem = collType.双眼;
            txt_collType.Text = comboBox_collType.SelectedItem.ToString();

            btn_captureForce.Enabled = false;
            pic_imageL1.Image = null;
            pic_imageR1.Image = null;
            label_qualityL.Text = "";
            label_qualityR.Text = "";
        }       

        #endregion


        #region step1

        
        /// <summary>
        /// 上传本地照片
        /// </summary>
        private void btn_localPhoto_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();     //显示选择文件对话框
            openFileDialog1.InitialDirectory = "c:\\";
            openFileDialog1.Filter = "(*.jpg,*.bmp,*.png)|*.jpg;*.bmp;*.png";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string path = openFileDialog1.FileName;          //文件路径
                FileInfo fileInfo = new FileInfo(path);

                // 限制文件大小
                if (fileInfo.Length > 200 * 1024)
                {
                    MessageBox.Show("请选择小于200KB的图片");
                }
                else
                {
                    pic_IDFace.Image = Image.FromFile(path);
                }
            }
        }

      
        
        /// <summary>
        /// 读取证件信息
        /// </summary>
        private void btn_readCard_Click(object sender, EventArgs e)
        {
            try
            {
                //string icsResult = "";
                //if (!isICSConnected)
                //与ICS服务通信
                //using (var ws = new WebSocket("ws://127.0.0.1:1234"))
                //{
                //    ws.OnMessage += (sender2, e2) =>
                //        icsResult = e2.Data;
                      
                //    ws.Connect();
                //    ws.Send("ReadIdCard");
                //    while (true)
                //    {
                //        if (icsResult.Length <= 0) continue;
                //        if (!string.IsNullOrWhiteSpace(icsResult))
                //            MessageBox.Show(icsResult);
                //        icsResult = "";
                //        ws.Close();
                //        break;
                //    }

                //    //new Thread(new ThreadStart(() =>
                //    //{
                        
                //    //})).Start();
                    
                //}  

                byte[] CardPUCIIN = new byte[255];
                byte[] pucManaMsg = new byte[255];
                byte[] pucCHMsg = new byte[255];
                byte[] pucPHMsg = new byte[3024];
                UInt32 puiCHMsgLen = 0;
                UInt32 puiPHMsgLen = 0;
                int st = 0;
                st = SDT_StartFindIDCard(1001, CardPUCIIN, 1);
                if (st == 0x9f)
                {
                    st = SDT_SelectIDCard(1001, pucManaMsg, 1);
                    if (st == 0x90)
                    {
                        st = SDT_ReadBaseMsg(1001, pucCHMsg, ref puiCHMsgLen, pucPHMsg, ref puiPHMsgLen, 1);
                        if (st == 0x90)
                        {
                            string name = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 0, 30).Trim();
                            string gender = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 30, 2).Trim();
                            string nation = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 32, 4).Trim();
                            string birthDate = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 36, 16).Trim();
                            string address = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 52, 70).Trim();
                            string noID = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 122, 36).Trim();
                            string authority = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 158, 30).Trim();
                            
                            DateTime birthDate0 = DateTime.ParseExact(birthDate, "yyyyMMdd", null);
                            
                            string path0 = System.Windows.Forms.Application.StartupPath + "\\" + DateTime.Now.ToString("yyyyMMddhhmmss");
                            string path = path0 + ".wlt";
                            File.Delete(path);

                            FileStream fs = File.Open(path, FileMode.Append);
                            fs.Write(pucPHMsg, 0, (int)puiPHMsgLen);
                            fs.Close();

                            int img = GetBmp(path, 2);
                            string faceImageLoadPath = path0 + ".bmp";
                            ImageFormat faceImageLoadFormat = ImageFormat.Bmp;

                            txt_name.Text = name;
                            if (gender == "1") radio_male.Checked = true; else if (gender == "2") radio_female.Checked = true;


                            comboBox_nation.SelectedItem = Enum.Parse(typeof(nation), nation);

                            picker_birthday.Value = birthDate0;
                            txt_birthday.Text = birthDate0.ToString("yyyy-MM-dd");
                            txt_addr.Text = address;
                            txt_IDCardNo.Text = noID;
                            txt_cerAuth.Text = authority;
                            
                            //txt_remarks.Text = countAge(birthDate0);

                            Image imgF = Image.FromFile(faceImageLoadPath);
                            Image bmpF = new Bitmap(imgF);
                            imgF.Dispose();
                            pic_IDFace.Image = bmpF;
                            //File.Delete(faceImageLoadPath);
                        }
                        else
                        {
                            resetStep1();
                        }
                    }

                }
                else
                {
                    MessageBox.Show("读卡失败,请检查卡片放置位置。", "提示");
                    resetStep1();
                    return;
                }
            }
            catch (Exception ex)
            {
                string msg = "读取身份证出错:" + ex.Message;
                LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg);
            }
        }

        // 重置
        private void btn_reset_Click(object sender, EventArgs e)
        {
            resetStep1();
        }

        // 下一步
        private void btn_nextStep12_Click(object sender, EventArgs e)
        {
            try
            {
                if (txt_name.Text.Trim() == "")
                {
                    MessageBox.Show(this, "姓名不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                else
                {
                    if (!Validation.CheckName(txt_name.Text.Trim()))
                    {
                        MessageBox.Show(this, "请输入真实姓名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }

                if (txt_dept.Text.Trim() == "")
                {
                    MessageBox.Show(this, "部门不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                if (txt_IDCardNo.Text != "")
                {
                    if (!Validation.CheckIDCard(txt_IDCardNo.Text.Trim()))
                    {
                        MessageBox.Show(this, "请输入正确的身份证号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }

                    //判断身份证号是否重复
                    if (iPersonService.IsIdCardNoPresent(txt_IDCardNo.Text.Trim()) > 0)
                    {
                        MessageBox.Show("已存在该证件号码!");
                        return;
                    }

                }

                // 与身份证号相互校验
                if (txt_IDCardNo.Text != "")
                {
                    if (txt_IDCardNo.Text.Length == 18)
                    {
                        if ((Convert.ToInt16(txt_IDCardNo.Text.Substring(16, 1)) % 2) == 1)//奇数
                        {
                            radio_male.Checked = true;
                        }
                        else radio_female.Checked = true;
                    }
                    if (txt_birthday.Text != "")
                    {
                        string birth = "";
                        if (txt_IDCardNo.Text.Length == 15) birth = ("19" + txt_IDCardNo.Text.Substring(6, 6)).Insert(2, "-").Insert(5, "-");
                        else if (txt_IDCardNo.Text.Length == 18) birth = txt_IDCardNo.Text.Substring(6, 8).Insert(4, "-").Insert(7, "-");
                        if (birth != txt_birthday.Text)
                        {
                            MessageBox.Show(this, "所选生日与身份证号中的生日不一致!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            return;
                        }
                    }
                }

                //判断员工编号是否重复
                if (txt_staffNo.Text.Trim() != "" && iPersonService.IsStaffNoPresent(txt_staffNo.Text.Trim()) > 0)
                {
                    MessageBox.Show("已存在该员工编号!");
                    return;
                }


                //收集数据
                person = new Person();
                person.name = txt_name.Text.Trim(); // 姓名
                if (txt_staffNo.Text.Trim() != "") person.staffNo = txt_staffNo.Text.Trim();// 员工编号
                person.deptId = Convert.ToInt64(deptId);// 部门
                if (radio_male.Checked) person.sex = ((int)sex.男).ToString(); else if (radio_female.Checked) person.sex = ((int)sex.女).ToString(); // 性别                  
                if (txt_IDCardNo.Text.Trim() != "") person.idCardNo = txt_IDCardNo.Text.Trim(); // 证件号码                
                if (comboBox_nation.SelectedIndex > -1) person.nation = comboBox_nation.SelectedItem.GetHashCode().ToString(); // 民族
                if (txt_birthday.Text != "") person.birthday = Convert.ToDateTime(txt_birthday.Text);//生日  
                person.cerAuth = txt_cerAuth.Text.Trim(); // 颁证单位
                person.addr = txt_addr.Text.Trim(); // 住址
                person.remarks = txt_remarks.Text.Trim(); // 备注
                if (pic_IDFace.Image != null)//证件照
                {
                    Image img = pic_IDFace.Image;
                    MemoryStream ms = new MemoryStream();
                    img.Save(ms, ImageFormat.Bmp);
                    byte[] arr = ms.ToArray();
                    ms.Close();
                    person.photoData = "data:image/png;base64," + Convert.ToBase64String(arr);
                }

                panel_btn.Visible = false;
                panel_result.Visible = false;
                btn_save.Visible = true;
                btn_lastStep32.Visible = true;

                //刷新步骤条状态
                tabControl_Main.SelectedIndex = 1;

            }
            catch (Exception ex)
            {
                string msg = "保存基础信息出错:" + ex.Message;
                LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg);
            }

        }


         
        /// <summary>
        /// 选择生日
        /// </summary>
        private void picker_birthday_ValueChanged(object sender, EventArgs e)
        {
            if (picker_birthday.Value > DateTime.Now)
            {
                MessageBox.Show("请选择正确的出生日期!", "提示");
                return;
            }
            txt_birthday.Text = picker_birthday.Value.ToString("yyyy-MM-dd");
            //txt_remarks.Text = countAge(picker_birthday.Value); //年龄
            //txt_birthday.Focus();
        }
       
           
      
        // 从身份证号得到生日和性别
        private void txt_IDCardNo_TextChanged(object sender, EventArgs e)
        {
            if (txt_IDCardNo.Text != "")
            {
                if (Validation.CheckIDCard(txt_IDCardNo.Text))
                {
                    string idCardNo = txt_IDCardNo.Text;
                    string birth = "";
                    if (idCardNo.Length == 15) birth = "19" + idCardNo.Substring(6, 6).Insert(2, "-").Insert(5, "-");
                    else if (idCardNo.Length == 18)
                    {
                        birth = idCardNo.Substring(6, 8).Insert(4, "-").Insert(7, "-");
                        if ((Convert.ToInt16(idCardNo.Substring(16, 1)) % 2) == 1)//奇数
                        {
                            radio_male.Checked = true;
                        }
                        else radio_female.Checked = true;
                    }
                    txt_birthday.Text = birth;
                    //txt_remarks.Text = countAge(Convert.ToDateTime(birth));
                }
            }
        }
            
   
        // 展示部门
        private void btn_dropDept_Click(object sender, EventArgs e)
        {           
            //comboBox_dept.DroppedDown = true;
            treeView_dept.Visible = !treeView_dept.Visible;
            ctrlDept.loadData();

            treeView_dept.Nodes.Clear();
            int index = 0;
            if (CtrlDept.parent.Rows.Count > 0)
            {
                foreach (DataRow rowParent in CtrlDept.parent.Rows)
                {
                    TreeNode parentNode = new TreeNode();
                    parentNode.Text = rowParent[2].ToString();
                    parentNode.Tag = rowParent[0].ToString();
                    treeView_dept.Nodes.Add(parentNode);
                    foreach (DataRow rowChild in CtrlDept.children.Tables[index].Rows)
                    {
                        TreeNode childNode = new TreeNode();
                        childNode.Text = rowChild[2].ToString();
                        childNode.Tag = rowChild[0].ToString();
                        treeView_dept.Nodes[index].Nodes.Add(childNode);
                    }
                    index++;
                }
            }
            else
            {
                foreach (DataRow rowChild in CtrlDept.children.Tables[0].Rows)
                {
                    TreeNode childNode = new TreeNode();
                    childNode.Text = rowChild[2].ToString();
                    childNode.Tag = rowChild[0].ToString();
                    treeView_dept.Nodes.Add(childNode);
                }
 
            }

        }
        private void txt_dept_MouseClick(object sender, MouseEventArgs e)
        {
            treeView_dept.Visible = !treeView_dept.Visible;
            ctrlDept.loadData();

            treeView_dept.Nodes.Clear();
            int index = 0;
            if (CtrlDept.parent.Rows.Count > 0)
            {
                foreach (DataRow rowParent in CtrlDept.parent.Rows)
                {
                    TreeNode parentNode = new TreeNode();
                    parentNode.Text = rowParent[2].ToString();
                    parentNode.Tag = rowParent[0].ToString();
                    treeView_dept.Nodes.Add(parentNode);
                    foreach (DataRow rowChild in CtrlDept.children.Tables[index].Rows)
                    {
                        TreeNode childNode = new TreeNode();
                        childNode.Text = rowChild[2].ToString();
                        childNode.Tag = rowChild[0].ToString();
                        treeView_dept.Nodes[index].Nodes.Add(childNode);
                    }
                    index++;
                }
            }
            else
            {
                foreach (DataRow rowChild in CtrlDept.children.Tables[index].Rows)
                {
                    TreeNode childNode = new TreeNode();
                    childNode.Text = rowChild[2].ToString();
                    childNode.Tag = rowChild[0].ToString();
                    treeView_dept.Nodes.Add(childNode);
                }

            }
        }

        //选择部门
        private void treeView_dept_AfterSelect(object sender, TreeViewEventArgs e)
        {
            deptId = treeView_dept.SelectedNode.Tag.ToString();
            txt_dept.Text = treeView_dept.SelectedNode.Text;
            treeView_dept.Visible = false;
        }

        private void btn_dropNation_Click(object sender, EventArgs e)
        {
            comboBox_nation.DroppedDown = true;
        }
        

        private void btn_DropBirth_Click(object sender, EventArgs e)
        {
            picker_birthday.Focus();
            SendKeys.Send("{F4}"); //模拟按下F4,弹出日期面板
        }
               

        private void comboBox_nation_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox_nation.SelectedIndex > -1) txt_nation.Text = comboBox_nation.SelectedItem.ToString();
        }

        

        #endregion
        

        #region step2

        // 上一步
        private void btn_lastStep32_Click(object sender, EventArgs e)
        {
            tabControl_Main.SelectedIndex = 0;            
        }

        // 保存
        private void btn_save_Click(object sender, EventArgs e)
        {
            if (pic_imageL1.Image == null && pic_imageR1.Image == null)
            {
                MessageBox.Show("请先采集虹膜图片!", "提示", MessageBoxButtons.OK);
                return;
            }

            btn_save.Enabled = false;
            try
            {
                byte[] qualifiedIrisBufferL = null;
                byte[] qualifiedIrisBufferR = null;
                object irisCodeL = null;
                object irisCodeR = null;


                //虹膜匹配查重
                DataTable ds = new DataTable();
                bool isExist = false;
                if (iPersonService.GetAllIrisCode(ref ds) == 0)
                {
                    int iMatchNumber = 0;
                    float iHammingDistance = 1;

                    m_CodeListMgr.CreateList(ds); //加载匹配列表

                    int height = 0;
                    int width = 0;
                    if (pic_imageL1.Image != null)
                    {
                        qualifiedIrisBufferL = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_zy.ToString()), out height, out width);

                        iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBufferL, out iHammingDistance, out irisCodeL);
                        if (iMatchNumber != 0)
                        {
                            DialogResult result = MessageBox.Show("已存在此虹膜信息,是否继续保存,将之前的人员信息及虹膜信息覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                            if (result == DialogResult.No)
                            {
                                return;
                            }
                            else
                            {
                                isExist = true;
                                string personId = m_CodeListMgr.GetUserForIndex(iMatchNumber);//personId 
                                iPersonService.deletePersonAndIrisById(Convert.ToInt64(personId));
                            }
                        }
                        else//编码失败
                        {
                            if (irisCodeL == null)
                            {
                                return;
                            }
                        }
                    }
                    if (!isExist && pic_imageR1.Image != null)
                    {
                        qualifiedIrisBufferR = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_yy.ToString()), out height, out width);
                        iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBufferR, out iHammingDistance, out irisCodeR);
                        if (iMatchNumber != 0)
                        {
                            DialogResult result = MessageBox.Show("已存在该虹膜信息,是否继续保存,将之前的人员信息及虹膜信息覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                            if (result == DialogResult.No)
                            {
                                return;
                            }
                            else
                            {
                                string personId = m_CodeListMgr.GetUserForIndex(iMatchNumber);//personId 
                                iPersonService.deletePersonAndIrisById(Convert.ToInt64(personId));
                            }
                        }
                        else//编码失败
                        {
                            if (irisCodeR == null)
                            {
                                return;
                            }
                        }
                    }
                }
                else
                {
                    return;
                }



                //基础信息
                person.id = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0);
                person.collType = comboBox_collType.SelectedItem.GetHashCode().ToString();//采集类型
                person.collTime = DateTime.Now;
                if (iPersonService.AddPerson(person) != 0)
                {
                    MessageBox.Show("保存失败,数据库异常!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }


                // 虹膜数据 irisData 在采集结果事件里new    
                irisData.id = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0);
                irisData.personId = person.id;
                if (pic_imageL1.Image != null)//左眼虹膜
                {
                    irisData.irisL1 = (byte[])irisCodeL;
                    irisData.irisL2 = (byte[])irisCodeL;
                    irisData.imageL1Data = "data:image/bmp;base64," + hmzp_zy.ToString();
                    irisData.imageL2Data = "data:image/bmp;base64," + hmzp_zy.ToString();
                }
                if (pic_imageR1.Image != null)//右眼虹膜
                {
                    irisData.irisR1 = (byte[])irisCodeR;
                    irisData.irisR2 = (byte[])irisCodeR;
                    irisData.imageR1Data = "data:image/bmp;base64," + hmzp_yy.ToString();
                    irisData.imageR2Data = "data:image/bmp;base64," + hmzp_yy.ToString();
                }
                if (iPersonService.AddIrisData(irisData) != 0)
                {
                    MessageBox.Show("保存失败,数据库异常!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                //语音提示注册成功
                //SoundPlayer sound = new SoundPlayer("saveSuccess.wav");
                //sound.Play();



                DialogResult r = MessageBox.Show("保存成功!" + "\n" + "是否继续添加人员?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (r == DialogResult.No)//跳转到详情页
                {
                    //new Thread(new ThreadStart(() =>
                    //{
                    iPersonService.GetDetail(person.id, ref person, ref irisData);

                    insertService.setToFirst(panel_Insert);
                    insertService.SetPanelControl(panel_Insert, "detail");

                    //})).Start();

                    panel4.Visible = false;
                    panel_Insert.BringToFront();

                }
                else //跳转到信息采集第一步
                {
                    //panel_detail.Visible = false;
                    tabControl_Main.SelectedIndex = 0;
                    panel4.Visible = true;
                }

                //清空界面数据
                resetStep1();
                pic_imageL1.Image = null;
                pic_imageR1.Image = null;
                label_qualityL.Text = "";
                label_qualityR.Text = "";
                btn_save.Enabled = true;
                initInputItems();
                btn_captureForce.Enabled = false;
                btn_captureIris.Enabled = true;
                btn_dropCollType.Enabled = true;
                hmzp_zy = null;//左眼虹膜图片base64编码
                hmzp_yy = null;//右眼虹膜图片base64编码

            }
            catch (Exception ex)
            {
                //SoundPlayer sound = new SoundPlayer("saveFailure.wav");
                //sound.Play();

                string msg = "注册失败:" + ex.Message;
                LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg);

                axIrisDevCtrl1.StopCapture();
                axIrisDevCtrl1.IrisClose();
            }
            finally
            {
                btn_save.Enabled = true;
            }
        }            
        

        // 开始采集
        private void btn_captureIris_Click(object sender, EventArgs e)
        {
            isCapturing = true;
            try
            {
                if (deviceType == "1")
                {
                    axIrisDevCtrl1.Visible = false;
                    irisColCtrl1.Visible = true;
                    btn_captureForce.Enabled = false;


                    btn_captureIris.Enabled = false;
                    btn_dropCollType.Enabled = false;
                    txt_collType.Enabled = false;
                    comboBox_collType.Enabled = false;
                    btn_dropCollType.BackColor = ColorTranslator.FromHtml("#ECEEF2");

                    String light = "1A";
                    String strJson = "{\"white_brightness\":\"" + light + "\"}";

                    if (!devInited)
                    {
                        int result = irisColCtrl1.IrisInit(strJson);
                        if (result == 0)
                        {
                            devInited = true;
                        }
                        else
                        {
                            btn_captureIris.Enabled = true;
                            btn_dropCollType.Enabled = true;
                            txt_collType.Enabled = true;
                            comboBox_collType.Enabled = true;
                            panel_vedioImage.Visible = true;
                            btn_dropCollType.BackColor = Color.White;

                            MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK);
                            return;
                        }
                    }
                    panel_vedioImage.Visible = false;

                    // 初始化数据
                    label_qualityL.Text = "";
                    label_qualityR.Text = "";
                    pic_imageL1.Image = null;
                    pic_imageR1.Image = null;


                    // 开始采集
                    //new Thread(() =>
                    //{
                    try
                    {
                        irisColCtrl1.Focus();
                        //irisColCtrl1.setUserName(textBox_name.Text);
                        irisColCtrl1.CaptureEvent -= CaptureEvent;
                        eyeType = comboBox_collType.SelectedItem.GetHashCode().ToString();
                        strJson = "{\"eyeType\":\"" + eyeType + "\"}";
                        Thread.Sleep(100);
                        int result1 = irisColCtrl1.StartCapture(strJson);

                        //注册采集事件
                        if (result1 == 0)
                            irisColCtrl1.CaptureEvent += CaptureEvent;
                        irisColCtrl1.Capture();
                    }
                    catch (Exception ex)
                    {
                    }
                    //}).Start();

                    isCaptureForce = false;

                }
                else if (deviceType == "2")
                {
                    axIrisDevCtrl1.Visible = true;
                    irisColCtrl1.Visible = false;

                    btn_captureIris.Enabled = false;
                    btn_captureForce.Enabled = false;
                    btn_dropCollType.Enabled = false;
                    txt_collType.Enabled = false;
                    comboBox_collType.Enabled = false;
                    btn_dropCollType.BackColor = ColorTranslator.FromHtml("#ECEEF2");

                    //采集设备初始化
                    if (devInited == false)
                    {
                        string initText = "{\"log\":\"0\",\"white_brightness\":\"240\"}";
                        int iResult = axIrisDevCtrl1.IrisInit(initText);
                        if (iResult == 0)
                        {
                            devInited = true;
                        }
                        else
                        {
                            axIrisDevCtrl1.IrisClose();
                            btn_captureIris.Enabled = true;
                            btn_dropCollType.Enabled = true;
                            txt_collType.Enabled = true;
                            comboBox_collType.Enabled = true;
                            panel_vedioImage.Visible = true;
                            btn_dropCollType.BackColor = Color.White;

                            MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK);
                            return;
                        }
                    }

                    panel_vedioImage.Visible = false;

                    // 初始化数据
                    label_qualityL.Text = "";
                    label_qualityR.Text = "";
                    pic_imageL1.Image = null;
                    pic_imageR1.Image = null;


                    // 开始采集
                    //new Thread(() =>
                    //{
                    try
                    {
                        string collType = "{\"eyeType\":\"" + comboBox_collType.SelectedItem.GetHashCode().ToString() + "\"}";
                        
                        axIrisDevCtrl1.StartCapture(collType);
                    }
                    catch (Exception ex)
                    {
                    }
                    //}).Start();

                    isCaptureForce = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
      
        // 强制采集
        private void btn_captureForce_Click(object sender, EventArgs e)
        {
            isCapturing = true;
            try
            {
                btn_captureIris.Enabled = false;
                btn_captureForce.Enabled = false;
                btn_dropCollType.Enabled = false;
                txt_collType.Enabled = false;
                comboBox_collType.Enabled = false;
                btn_dropCollType.BackColor = ColorTranslator.FromHtml("#ECEEF2");

                //采集设备初始化
                if (devInited == false)
                {
                    string initText = "{\"log\":\"0\",\"white_brightness\":\"240\"}";
                    int iResult = axIrisDevCtrl1.IrisInit(initText);
                    if (iResult == 0)
                    {
                        devInited = true;
                    }
                    else
                    {
                        axIrisDevCtrl1.IrisClose();
                        btn_captureIris.Enabled = true;
                        btn_captureForce.Enabled = true;
                        btn_dropCollType.Enabled = true;
                        txt_collType.Enabled = true;
                        comboBox_collType.Enabled = true;
                        btn_dropCollType.BackColor = Color.White;
                        MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK);
                        return;
                    }

                }

                panel_vedioImage.Visible = false;

                // 初始化数据
                label_qualityL.Text = "";
                label_qualityR.Text = "";
                pic_imageL1.Image = null;
                pic_imageR1.Image = null;

                // 启动强制采集
                //new Thread(() =>
                //{
                try
                {
                    string collType = "{\"eyeType\":\"" + comboBox_collType.SelectedItem.GetHashCode().ToString() + "\"}";
                    axIrisDevCtrl1.StartCaptureForce(collType);
                }
                catch (Exception ex)
                {
                }
                //}).Start();

                isCaptureForce = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }     
       

        // 重置采集设备
        private void btn_resetDev_Click(object sender, EventArgs e)
        {
            //axIrisDevCtrl1.StopCapture();
            //axIrisDevCtrl1.IrisClose();
            //axIrisDevCtrl1.ReSet();
            //btn_captureForce.Enabled = false;
            //btn_captureForce.ForeColor = Color.Black;
        }

        // 采集结果事件
        private void axIrisDevCtrl1_OnCapture(object sender, AxIrisDevCtrlLib._DIrisDevCtrlEvents_OnCaptureEvent e)
        {
            hmzp_zy = null;
            hmzp_yy = null;
            isCapturing = false;

            // 识别验证
            if (btn_recognitionClick)
            {
                btn_startRecog.Enabled = true;
                panel_vedioImage.Visible = true;
                panel_vedioImage.BringToFront();

                if (e.result != 0)
                {
                    MessageBox.Show("采集虹膜图片失败,请重试!");
                    return;
                }
                else
                {
                    int iMatchNumber = 0;
                    float iHammingDistance = 1;

                    DataTable dt = new DataTable();
                    if (iPersonService.GetAllIrisCode(ref dt) == 0)
                    {

                        // 加载匹配列表
                        m_CodeListMgr.CreateList(dt); //加载匹配列表

                        string s = e.sIrisInfo;
                        JavaScriptSerializer serializer = new JavaScriptSerializer();
                        Dictionary<string, object> jsonResult = (Dictionary<string, object>)serializer.DeserializeObject(e.sIrisInfo);

                        jsonResult.TryGetValue("hmzp_zy", out hmzp_zy);
                        jsonResult.TryGetValue("hmzp_yy", out hmzp_yy);

                        object irisCode = new object();
                        int height, width;
                        //匹配左眼
                        byte[] qualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_zy.ToString()), out height, out width);
                        iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBuffer, out iHammingDistance, out irisCode);
                        if (iMatchNumber == 0)
                        {
                            // 匹配右眼
                            qualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_yy.ToString()), out height, out width);
                            iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBuffer, out iHammingDistance, out irisCode);
                            if (iMatchNumber == 0)
                            {
                                label_name.Text = "识别失败,未知人员!";
                                label_name.ForeColor = Color.OrangeRed;
                            }
                            else
                            {
                                Int64 personId = Convert.ToInt64(m_CodeListMgr.GetUserForIndex(iMatchNumber));//personId 
                                string deptName = "";
                                Person person = new Person();
                                iRecognitionService.GetInfoById(personId, ref deptName, ref person);

                                label_name.Text = person.name;
                                label_sex.Text = person.sex == "1" ? "男" : "女";
                                label_dept.Text = deptName;
                                label_idCardNo.Text = person.idCardNo;

                                label_name.ForeColor = Color.Black;
                            }
                        }
                        else
                        {
                            Int64 personId = Convert.ToInt64(m_CodeListMgr.GetUserForIndex(iMatchNumber));//personId 
                            string deptName = "";
                            Person person = new Person();
                            iRecognitionService.GetInfoById(personId, ref deptName, ref person);

                            label_name.Text = person.name;
                            label_sex.Text = person.sex == "1" ? "男" : "女";
                            label_dept.Text = deptName;
                            label_idCardNo.Text = person.idCardNo;
                            label_name.ForeColor = Color.Black;

                        }
                    }

                }
            }
            // 注册采集
            else
            {

                panel_vedioImage.Visible = true;
                panel_vedioImage.BringToFront();

                irisData = new IrisData();
                irisData.qL1 = "0";
                irisData.qR1 = "0";
                irisData.qL2 = "0";
                irisData.qR2 = "0";

                btn_captureIris.Enabled = true;
                btn_dropCollType.Enabled = true;
                txt_collType.Enabled = true;
                comboBox_collType.Enabled = true;
                btn_dropCollType.BackColor = Color.White;
                if (isCaptureForce) btn_captureForce.Enabled = true;

                //btn_captureForce.HoverForeColor = Color.White;

                if (e.result != 0)
                {
                    label_qualityL.Text = "质量:<50";
                    label_qualityR.Text = "质量:<50";
                    label_qualityL.ForeColor = Color.OrangeRed;
                    label_qualityR.ForeColor = Color.OrangeRed;
                    btn_captureForce.Enabled = true;

                    //语音提示采集失败
                    //SoundPlayer sound = new SoundPlayer("captureFailure.wav");
                    //sound.Play();
                    return;
                }
                try
                {
                    Bitmap bmpL1 = null, bmpR1 = null;
                    int height = 480;
                    int width = 640;
                    object leftIrisCode = new object();
                    object rightIrisCode = new object();

                    string s = e.sIrisInfo;
                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    Dictionary<string, object> jsonResult = (Dictionary<string, object>)serializer.DeserializeObject(e.sIrisInfo);

                    object flgResult;//0:成功;-1:质量不合格;-2:采集超时;其他:失败;
                    hmzp_zy = null;//左眼虹膜图片base64编码
                    hmzp_yy = null;//右眼虹膜图片base64编码
                    object cjtphs = null;//采集图片耗时
                    object sbxh = null;//设备型号
                    object sbbh = null;//设备编号
                    object zy_xxzlpf = null;//左眼图像质量评分
                    object yy_xxzlpf = null; //右眼图像质量评分
                    object sbcsdm = null; // 设备厂商代码(信用代码)

                    jsonResult.TryGetValue("flgResult", out flgResult);
                    jsonResult.TryGetValue("hmzp_zy", out hmzp_zy);
                    jsonResult.TryGetValue("hmzp_yy", out hmzp_yy);
                    jsonResult.TryGetValue("cjtphs", out cjtphs);
                    jsonResult.TryGetValue("sbxh", out sbxh);
                    jsonResult.TryGetValue("sbbh", out sbbh);
                    jsonResult.TryGetValue("zy_xxzlpf", out zy_xxzlpf);
                    jsonResult.TryGetValue("yy_xxzlpf", out yy_xxzlpf);
                    jsonResult.TryGetValue("sbcsdm", out sbcsdm);
                    if (flgResult.ToString() == "0")
                    {
                        if (comboBox_collType.Text == "双眼" || comboBox_collType.Text == "左眼")
                        {
                            if (hmzp_zy != null && hmzp_zy.ToString() != "")
                            {
                                bmpL1 = Base64StringToImage(hmzp_zy.ToString());

                                //显示左眼图像
                                if (bmpL1 != null)
                                {
                                    Bitmap tempL1 = new Bitmap(640, 480);
                                    Graphics drawL1 = Graphics.FromImage(tempL1);
                                    drawL1.DrawImage(bmpL1, 0, 0);
                                    pic_imageL1.Image = (Image)tempL1;
                                    drawL1.Dispose();

                                }

                            }
                            else
                            {
                                MessageBox.Show("左眼采集失败!");
                                return;
                            }
                        }
                        if (comboBox_collType.Text == "双眼" || comboBox_collType.Text == "右眼")
                        {
                            if (hmzp_yy != null && hmzp_yy.ToString() != "")
                            {
                                bmpR1 = Base64StringToImage(hmzp_yy.ToString());

                                //显示右眼图像
                                if (bmpR1 != null)
                                {
                                    //, PixelFormat.Format8bppIndexed
                                    Bitmap tempR1 = new Bitmap(640, 480);
                                    Graphics drawR1 = Graphics.FromImage(tempR1);
                                    drawR1.DrawImage(bmpR1, 0, 0);
                                    pic_imageR1.Image = (Image)tempR1;
                                    drawR1.Dispose();
                                }

                            }
                            else
                            {
                                MessageBox.Show("右眼采集失败!");
                                return;
                            }
                        }

                        string zyQ = "";
                        string yyQ = "";
                        //if (zy_xxzlpf != null && zy_xxzlpf.ToString() != "0") zyQ = ((double)(Convert.ToDouble(zy_xxzlpf) / 10)).ToString("0.0");
                        //if (yy_xxzlpf != null && yy_xxzlpf.ToString() != "0") yyQ = ((double)(Convert.ToDouble(yy_xxzlpf) / 10)).ToString("0.0");
                        if (zy_xxzlpf != null && zy_xxzlpf.ToString() != "0") zyQ = zy_xxzlpf.ToString();
                        if (yy_xxzlpf != null && yy_xxzlpf.ToString() != "0") yyQ = yy_xxzlpf.ToString();


                        if (!isCaptureForce)
                        {
                            if (zyQ != "")
                            {
                                label_qualityL.Text = "质量:" + zyQ;
                                label_qualityL.ForeColor = Color.LawnGreen;
                            }
                            if (yyQ != "")
                            {
                                label_qualityR.Text = "质量:" + yyQ;
                                label_qualityR.ForeColor = Color.LawnGreen;
                            }
                        }

                        // 收集数据
                        irisData.qL1 = zyQ;
                        irisData.qL2 = zyQ;
                        irisData.qR1 = yyQ;
                        irisData.qR2 = yyQ;

                    }
                    else
                    {
                        label_qualityL.Text = "质量:<50";
                        label_qualityR.Text = "质量:<50";
                        label_qualityL.ForeColor = Color.OrangeRed;
                        label_qualityR.ForeColor = Color.OrangeRed;
                        btn_captureForce.Enabled = true;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("虹膜采集错误:" + ex.Message);
                }
            }
        }      
                   

        private void btn_dropCollType_Click(object sender, EventArgs e)
        {
            comboBox_collType.DroppedDown = true;
        }

        /// <summary>
        /// 注册采集处理事件
        /// </summary>
        /// <param name="info"></param>
        public void CaptureEvent(String info)
        {
            hmzp_zy = null;
            hmzp_yy = null;
            isCapturing = false;

            ResultParam resJson = JsonConvert.DeserializeObject<ResultParam>(info);

            //判断是否采集成功
            bool captureSuccess = true;
            if (eyeType == "3")
            {
                if (resJson.Hmzp_zy.Contains("左眼") || resJson.Hmzp_yy.Contains("右眼"))
                {
                    captureSuccess = false;
                }
            }
            else if (eyeType == "2")
            {
                if (resJson.Hmzp_zy.Contains("左眼"))
                {
                    captureSuccess = false;
                }
            }
            else if (eyeType == "1")
            {
                if (resJson.Hmzp_yy.Contains("右眼"))
                {
                    captureSuccess = false;
                }
            }

            // 识别验证
            if (btn_recognitionClick)
            {
                btn_startRecog.Enabled = true;
                panel_vedioImage.Visible = true;
                panel_vedioImage.BringToFront();

                //采集结果处理
                if (!captureSuccess)
                {
                    MessageBox.Show("采集虹膜图片失败,请重试!");
                    return;
                }
                else
                {
                    label_cost.Text = "采集图片耗时:" + resJson.Cjtphs + "ms";
                    int iMatchNumber = 0;
                    float iHammingDistance = 1;

                    DataTable ds = new DataTable();
                    // 加载匹配列表
                    if (iPersonService.GetAllIrisCode(ref ds) == 0)
                    {
                        m_CodeListMgr.CreateList(ds); //加载匹配列表

                        //获取左右眼图片
                        hmzp_zy = resJson.Hmzp_zy;
                        hmzp_yy = resJson.Hmzp_yy;

                        object irisCode = new object();
                        //匹配左眼
                        int height, width = 0;

                        byte[] qualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_zy.ToString()), out height, out width);
                        iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBuffer, out iHammingDistance, out irisCode);
                        if (iMatchNumber == 0)
                        {
                            // 匹配右眼
                            qualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_yy.ToString()), out height, out width); 
                            iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBuffer, out iHammingDistance, out irisCode);
                            if (iMatchNumber == 0)
                            {
                                label_name.Text = "识别失败,未知人员!";
                                label_name.ForeColor = Color.OrangeRed;
                            }
                            else
                            {
                                Int64 personId = Convert.ToInt64(m_CodeListMgr.GetUserForIndex(iMatchNumber));//personId 
                                string deptName = "";
                                Person person = new Person();
                                iRecognitionService.GetInfoById(personId, ref deptName, ref person);

                                label_name.Text = person.name;
                                label_sex.Text = person.sex == "1" ? "男" : "女";
                                label_dept.Text = deptName;
                                label_idCardNo.Text = person.idCardNo;
                                label_name.ForeColor = Color.Black;
                            }
                        }
                        else
                        {
                            Int64 personId = Convert.ToInt64(m_CodeListMgr.GetUserForIndex(iMatchNumber));//personId 
                            string deptName = "";
                            Person person = new Person();
                            iRecognitionService.GetInfoById(personId, ref deptName, ref person);

                            label_name.Text = person.name;
                            label_sex.Text = person.sex == "1" ? "男" : "女";
                            label_dept.Text = deptName;
                            label_idCardNo.Text = person.idCardNo;
                            label_name.ForeColor = Color.Black;

                        }
                    }

                }
            }
            // 注册采集
            else
            {
                panel_vedioImage.Visible = true;
                panel_vedioImage.BringToFront();

                irisData = new IrisData();
                irisData.qL1 = "0";
                irisData.qR1 = "0";
                irisData.qL2 = "0";
                irisData.qR2 = "0";

                btn_captureIris.Enabled = true;
                btn_dropCollType.Enabled = true;
                txt_collType.Enabled = true;
                comboBox_collType.Enabled = true;
                btn_dropCollType.BackColor = Color.White;
                //if (isCaptureForce) btn_captureForce.Enabled = true;

                //btn_captureForce.HoverForeColor = Color.White;

                if (!captureSuccess)
                {
                    label_qualityL.Text = "质量:<50";
                    label_qualityR.Text = "质量:<50";
                    label_qualityL.ForeColor = Color.OrangeRed;
                    label_qualityR.ForeColor = Color.OrangeRed;
                    //btn_captureForce.Enabled = true;

                    //语音提示采集失败
                    //SoundPlayer sound = new SoundPlayer("captureFailure.wav");
                    //sound.Play();
                    return;
                }
                try
                {
                    label_cost.Text = "采集图片耗时:" + resJson.Cjtphs + "ms";
                    Bitmap bmpL1 = null, bmpR1 = null;

                    object flgResult;//0:成功;-1:质量不合格;-2:采集超时;其他:失败;
                    hmzp_zy = null;//左眼虹膜图片base64编码
                    hmzp_yy = null;//右眼虹膜图片base64编码
                    object cjtphs = null;//采集图片耗时
                    object sbxh = null;//设备型号
                    object sbbh = null;//设备编号
                    object zy_xxzlpf = null;//左眼图像质量评分
                    object yy_xxzlpf = null; //右眼图像质量评分
                    object sbcsdm = null; // 设备厂商代码(信用代码)

                    hmzp_zy = resJson.Hmzp_zy;
                    hmzp_yy = resJson.Hmzp_yy;
                    cjtphs = resJson.Cjtphs;
                    sbxh = resJson.Sbxh;
                    sbbh = resJson.Sbbh;
                    zy_xxzlpf = resJson.Zy_xxzlpf.Substring(0, 4);
                    yy_xxzlpf = resJson.Yy_xxzlpf.Substring(0, 4);
                    sbcsdm = resJson.Sbcsdm;

                    if (captureSuccess)
                    {
                        if (comboBox_collType.Text == "双眼" || comboBox_collType.Text == "左眼")
                        {
                            if (hmzp_zy != null && hmzp_zy.ToString() != "")
                            {
                                bmpL1 = Base64StringToImage(hmzp_zy.ToString());

                                //显示左眼图像
                                if (bmpL1 != null)
                                {
                                    Bitmap tempL1 = new Bitmap(640, 480);
                                    Graphics drawL1 = Graphics.FromImage(tempL1);
                                    drawL1.DrawImage(bmpL1, 0, 0);
                                    pic_imageL1.Image = (Image)tempL1;
                                    drawL1.Dispose();

                                }

                                //编码
                                //Image img = bmpL1;
                                //byte[] LQualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(img, out height, out width);
                                //iResultL1 = m_iCamIrisClass.CreateLongIrisCode(LQualifiedIrisBuffer, out leftIrisCode1);

                                //if (iResultL1 != 0)
                                //{
                                //    MessageBox.Show("左眼编码失败!");
                                //    return;
                                //}                                                       


                            }
                            else
                            {
                                MessageBox.Show("左眼采集失败!");
                                return;
                            }
                        }
                        if (comboBox_collType.Text == "双眼" || comboBox_collType.Text == "右眼")
                        {
                            if (hmzp_yy != null && hmzp_yy.ToString() != "")
                            {
                                bmpR1 = Base64StringToImage(hmzp_yy.ToString());

                                //显示右眼图像
                                if (bmpR1 != null)
                                {
                                    //, PixelFormat.Format8bppIndexed
                                    Bitmap tempR1 = new Bitmap(640, 480);
                                    Graphics drawR1 = Graphics.FromImage(tempR1);
                                    drawR1.DrawImage(bmpR1, 0, 0);
                                    pic_imageR1.Image = (Image)tempR1;
                                    drawR1.Dispose();
                                }


                                //Image img = bmpR1;
                                //byte[] RQualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(img, out height, out width);
                                //iResultR1 = m_iCamIrisClass.CreateLongIrisCode(RQualifiedIrisBuffer, out rightIrisCode1);

                                //if (iResultR1 != 0)
                                //{
                                //    MessageBox.Show("右眼编码失败!");
                                //    return;
                                //}                           

                            }
                            else
                            {
                                MessageBox.Show("右眼采集失败!");
                                return;
                            }
                        }

                        string zyQ = "";
                        string yyQ = "";
                        //if (zy_xxzlpf != null && zy_xxzlpf.ToString() != "0") zyQ = ((double)(Convert.ToDouble(zy_xxzlpf) / 10)).ToString("0.0");
                        //if (yy_xxzlpf != null && yy_xxzlpf.ToString() != "0") yyQ = ((double)(Convert.ToDouble(yy_xxzlpf) / 10)).ToString("0.0");
                        if (!zy_xxzlpf.ToString().Contains("左眼") && zy_xxzlpf.ToString() != "0") zyQ = zy_xxzlpf.ToString();
                        if (!yy_xxzlpf.ToString().Contains("右眼") && yy_xxzlpf.ToString() != "0") yyQ = yy_xxzlpf.ToString();

                        if (!isCaptureForce)
                        {
                            if (zyQ != "")
                            {
                                label_qualityL.Text = "质量:" + zyQ;
                                label_qualityL.ForeColor = Color.LawnGreen;
                            }
                            if (yyQ != "")
                            {
                                label_qualityR.Text = "质量:" + yyQ;
                                label_qualityR.ForeColor = Color.LawnGreen;
                            }
                        }

                        // 收集数据
                        irisData.qL1 = zyQ;
                        irisData.qL2 = zyQ;
                        irisData.qR1 = yyQ;
                        irisData.qR2 = yyQ;

                    }
                    else
                    {
                        label_qualityL.Text = "质量:<50";
                        label_qualityR.Text = "质量:<50";
                        label_qualityL.ForeColor = Color.OrangeRed;
                        label_qualityR.ForeColor = Color.OrangeRed;
                        btn_captureForce.Enabled = true;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("虹膜采集错误:" + ex.Message);
                }
            }

        }


        #endregion


        #region 识别验证
        private void btn_startRecog_Click(object sender, EventArgs e)
        {
            label_name.Text = "";
            label_dept.Text = "";
            label_idCardNo.Text = "";
            label_sex.Text = "";
            btn_startRecog.Enabled = false;

            try
            {
                if (deviceType == "1")
                {                    
                    axIrisDevCtrl1.Visible = false;
                    irisColCtrl1.Visible = true;

                    btn_dropCollType.BackColor = ColorTranslator.FromHtml("#ECEEF2");

                    string light = "1A";
                    string strJson = "{\"white_brightness\":\"" + light + "\"}";

                    if (!devInited)
                    {
                        int result = irisColCtrl1.IrisInit(strJson);
                        if (result == 0)
                        {
                            devInited = true;
                        }
                        else
                        {
                            btn_startRecog.Enabled = true;

                            MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK);
                            return;
                        }
                    }

                    panel_vedioImage.Visible = false;

                    // 初始化数据
                    label_qualityL.Text = "";
                    label_qualityR.Text = "";
                    pic_imageL1.Image = null;
                    pic_imageR1.Image = null;


                    // 开始采集
                    //new Thread(() =>
                    //{
                    try
                    {
                        irisColCtrl1.Focus();
                        //irisColCtrl1.setUserName(textBox_name.Text);
                        irisColCtrl1.CaptureEvent -= CaptureEvent;
                        eyeType = comboBox_collType.SelectedItem.GetHashCode().ToString();
                        strJson = "{\"eyeType\":\"" + eyeType + "\"}";
                        Thread.Sleep(100);
                        int result1 = irisColCtrl1.StartCapture(strJson);

                        //注册采集事件
                        if (result1 == 0)
                            irisColCtrl1.CaptureEvent += CaptureEvent;
                        irisColCtrl1.Capture();
                    }
                    catch (Exception ex)
                    {
                    }
                    //}).Start();

                    isCaptureForce = false;
                }
                else if (deviceType == "2")
                {
                    axIrisDevCtrl1.Visible = true;
                    irisColCtrl1.Visible = false;

                    //采集设备初始化
                    if (devInited == false)
                    {
                        string initText = "{\"log\":\"0\",\"white_brightness\":\"240\"}";
                        int iResult = axIrisDevCtrl1.IrisInit(initText);
                        if (iResult == 0)
                        {
                            devInited = true;
                            panel_vedioImage.Visible = false;
                        }
                        else
                        {
                            axIrisDevCtrl1.IrisClose();
                            btn_startRecog.Enabled = true;

                            MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK);
                            return;
                        }
                    }
                    panel_vedioImage.Visible = false;

                    // 开始采集
                    //new Thread(() =>
                    //{
                    try
                    {
                        string collType = "{\"eyeType\":\"" + comboBox_collType.SelectedItem.GetHashCode().ToString() + "\"}";
                        axIrisDevCtrl1.StartCapture(collType);
                    }
                    catch (Exception ex)
                    {
                    }
                    //}).Start();

                    isCaptureForce = false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion

        #region 主页事件       

        #region 信息采集

        private void click1()
        {
            if (btn_startRecog.Enabled == false)
            {
                MessageBox.Show("正在进行识别验证,无法离开当前界面!");
                return;
            }
            btn_collectInfoClick = true;
            btn_collectListClick = false;
            btn_settinClick = false;
            btn_recognitionClick = false;
            btn_writeDataClick = false;

            btn_collectInfo.BringToFront();
            btn_collectInfo.Back = ColorTranslator.FromHtml("#56a3f2");
            btn_collectList.Back = Color.Transparent;
            btn_setting.Back = Color.Transparent;
            btn_recognition.Back = Color.Transparent;

            insertService.setToLast(panel_Insert);
            panel4.Visible = true;
           
            //panel_detail.Visible = false;

            resetStep1(); // 重置第一步
            resetStep3(); // 重置第三步

            tabControl_Main.SelectedIndex = 0;//显示第一步
            initInputItems();//初始化部分输入框的值

            treeView_dept.Visible = false;

        }
        private void show1()
        {
            if (!btn_collectInfoClick)
            {
                btn_collectInfo.Back = ColorTranslator.FromHtml("#56a3f2");
            }
        }
        private void hide1()
        {
            if (!btn_collectInfoClick) btn_collectInfo.Back = Color.Transparent;
        }
        private void btn_collectInfo_MouseClick(object sender, MouseEventArgs e)
        {
            click1();
        }
        private void pic_collInfo_MouseClick(object sender, MouseEventArgs e)
        {
            click1();
        }
        private void label_collInfo_Click(object sender, EventArgs e)
        {
            click1();
        }

        private void label_collInfo_MouseClick(object sender, MouseEventArgs e)
        {
            click1();
        }

        private void btn_collectInfo_MouseHover(object sender, EventArgs e)
        {
            show1();
        }

        private void btn_collectInfo_MouseLeave(object sender, EventArgs e)
        {
            hide1();
            
        }

        private void pic_collInfo_MouseHover(object sender, EventArgs e)
        {
            show1();
        }

        private void pic_collInfo_MouseLeave(object sender, EventArgs e)
        {
            hide1();
        }

        private void label_collInfo_MouseHover(object sender, EventArgs e)
        {
            show1();
        }

        private void label_collInfo_MouseLeave(object sender, EventArgs e)
        {
            hide1();
        }
       # endregion

        #region 采集列表

        private void click2()
        {
            if (btn_startRecog.Enabled == false)
            {
                MessageBox.Show("正在进行识别验证,无法离开当前界面!");
                return;
            }

            if (isCapturing)
            {
                MessageBox.Show("正在采集虹膜图片,无法离开当前界面!");
                return;
            }

            if (txt_name.Text != "" || txt_IDCardNo.Text != "" || txt_staffNo.Text != "" || txt_dept.Text.Trim() != "")
            {
                DialogResult r = MessageBox.Show("录入的信息还未保存,一旦离开将清空,确认离开当前页?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (r == DialogResult.No)
                {
                    return;
                }
            }

            resetStep1();
            btn_captureIris.Enabled = true;
            if (deviceType == "2") btn_captureForce.Enabled = true;
            
            panel_vedioImage.Visible = true;

            btn_collectInfoClick = false;
            btn_collectListClick = true;
            btn_settinClick = false;
            btn_recognitionClick = false;
            btn_writeDataClick = false;

            btn_collectList.BringToFront();
            btn_collectInfo.Back = Color.Transparent;
            btn_collectList.Back = ColorTranslator.FromHtml("#56a3f2"); 
            btn_setting.Back = Color.Transparent;
            btn_recognition.Back = Color.Transparent;

            insertService.setToFirst(panel_Insert);
            insertService.SetPanelControl(panel_Insert, "collect");


            IOM_cs.insertForm.collection.CtrlCollectionFrom.ctrlCollectionFrom.dataGridView1.ClearSelection();

        }
        private void show2()
        {
            if (!btn_collectListClick)
            {
                btn_collectList.Back = ColorTranslator.FromHtml("#56a3f2");
            }
        }
        private void hide2()
        {
            if (!btn_collectListClick)
                btn_collectList.Back = Color.Transparent;
        }
        private void btn_collectList_MouseClick(object sender, MouseEventArgs e)
        {
            click2();
        }
        private void pic_collList_MouseClick(object sender, MouseEventArgs e)
        {
            click2();
        }

        private void label_collList_MouseClick(object sender, MouseEventArgs e)
        {
            click2();
        }
        private void btn_collectList_MouseHover(object sender, EventArgs e)
        {
            show2();
        }

        private void btn_collectList_MouseLeave(object sender, EventArgs e)
        {
            hide2();
        }

        private void pic_collList_MouseHover(object sender, EventArgs e)
        {
            show2();
        }

        private void pic_collList_MouseLeave(object sender, EventArgs e)
        {
            hide2();
        }

        private void label_collList_MouseHover(object sender, EventArgs e)
        {
            show2();
        }

        private void label_collList_MouseLeave(object sender, EventArgs e)
        {
            hide2();
        }
      
        #endregion

        #region 系统设置

        private void click3()
        {
            //pic_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2");
            //label_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2");
            if (btn_startRecog.Enabled == false)
            {
                MessageBox.Show("正在进行识别验证,无法离开当前界面!");
                return;
            }
            if (isCapturing)
            {
                MessageBox.Show("正在采集虹膜图片,无法离开当前界面!");
                return;
            }
            if (txt_name.Text != "" || txt_IDCardNo.Text != "" || txt_staffNo.Text != "" || txt_dept.Text.Trim() != "")
            {
                DialogResult r = MessageBox.Show("录入的信息还未保存,一旦离开将清空,确认离开当前页?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (r == DialogResult.No)
                {
                    return;
                }
            }
            resetStep1();
            btn_captureIris.Enabled = true;
            if (deviceType == "2") btn_captureForce.Enabled = true;
            
            panel_vedioImage.Visible = true;

            btn_collectInfoClick = false;
            btn_collectListClick = false;
            btn_settinClick = true;
            btn_recognitionClick = false;
            btn_writeDataClick = false;

            btn_setting.BringToFront();
            btn_collectInfo.Back = Color.Transparent;
            btn_collectList.Back = Color.Transparent;
            btn_setting.Back = ColorTranslator.FromHtml("#56a3f2");
            btn_recognition.Back = Color.Transparent;


            insertService.setToFirst(panel_Insert);
            insertService.SetPanelControl(panel_Insert, "sys");

        }
        private void show3()
        {
            if (!btn_settinClick)
                btn_setting.Back = ColorTranslator.FromHtml("#56a3f2");
        }
        private void hide3()
        {
            if (!btn_settinClick)
                btn_setting.Back = Color.Transparent;
        }
        private void btn_setting_MouseClick(object sender, MouseEventArgs e)
        {
            click3();
        }

        private void pic_setting_MouseClick(object sender, MouseEventArgs e)
        {
            click3();
        }

        private void label_setting_MouseClick(object sender, MouseEventArgs e)
        {
            click3();
        }
        private void btn_setting_MouseHover(object sender, EventArgs e)
        {
            show3();
        }

        private void btn_setting_MouseLeave(object sender, EventArgs e)
        {
            hide3();
        }

        private void pic_setting_MouseHover(object sender, EventArgs e)
        {
            show3();
        }

        private void pic_setting_MouseLeave(object sender, EventArgs e)
        {
            hide3();
        }

        private void label_setting_MouseHover(object sender, EventArgs e)
        {
            show3();
        }

        private void label_setting_MouseLeave(object sender, EventArgs e)
        {
            hide3();
        }


        #endregion

        #region 识别验证

        private void click4()
        {
            //pic_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2");
            //label_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2");

            if (isCapturing)
            {
                MessageBox.Show("正在采集虹膜图片,无法离开当前界面!");
                return;
            }
            if (txt_name.Text != "" || txt_IDCardNo.Text != "" || txt_staffNo.Text != "" || txt_dept.Text.Trim() != "")
            {
                DialogResult r = MessageBox.Show("录入的信息还未保存,一旦离开将清空,确认离开当前页?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (r == DialogResult.No)
                {
                    return;
                }
            }
            resetStep1();
            btn_captureIris.Enabled = true;
            
            if(!devInited) panel_vedioImage.Visible = true;

            btn_collectInfoClick = false;
            btn_collectListClick = false;
            btn_settinClick = false;
            btn_recognitionClick = true;
            btn_writeDataClick = false;

            btn_recognition.BringToFront();
            btn_collectInfo.Back = Color.Transparent;
            btn_setting.Back = Color.Transparent;
            btn_collectList.Back = Color.Transparent;
            btn_recognition.Back = ColorTranslator.FromHtml("#56a3f2");


            insertService.setToLast(panel_Insert);
            panel4.Visible = true;

            //panel_detail.Visible = false;


            tabControl_Main.SelectedIndex = 1;//显示第三步

            label_name.Text = "";
            label_sex.Text = "";
            label_dept.Text = "";
            label_idCardNo.Text = "";

            panel_btn.Visible = true;
            panel_result.Visible = true;
            btn_save.Visible = false;
            btn_lastStep32.Visible = false;




        }
        private void show4()
        {
            if (!btn_recognitionClick)
                btn_recognition.Back = ColorTranslator.FromHtml("#56a3f2");
        }
        private void hide4()
        {
            if (!btn_recognitionClick)
                btn_recognition.Back = Color.Transparent;
        }
        private void btn_recognition_MouseClick(object sender, MouseEventArgs e)
        {
            click4();
        }

        private void pic_recognition_MouseClick(object sender, MouseEventArgs e)
        {
            click4();
        }

        private void label_recognition_MouseClick(object sender, MouseEventArgs e)
        {
            click4();
        }
        private void btn_recognition_MouseHover(object sender, EventArgs e)
        {
            show4();
        }
        private void btn_recognition_MouseLeave(object sender, EventArgs e)
        {
            hide4();
        }
        private void pic_recognition_MouseHover(object sender, EventArgs e)
        {
            show4();
        }

        private void pic_recognition_MouseLeave(object sender, EventArgs e)
        {
            hide4();
        }

        private void label_recognition_MouseHover(object sender, EventArgs e)
        {
            show4();
        }

        private void label_recognition_MouseLeave(object sender, EventArgs e)
        {
            hide4();
        }

        #endregion

        #region 数据写入
        private void click5()
        {
            //pic_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2");
            //label_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2");

            if (isCapturing)
            {
                MessageBox.Show("正在采集虹膜图片,无法离开当前界面!");
                return;
            }
            if (txt_name.Text != "" || txt_IDCardNo.Text != "" || txt_staffNo.Text != "" || txt_dept.Text.Trim() != "")
            {
                DialogResult r = MessageBox.Show("录入的信息还未保存,一旦离开将清空,确认离开当前页?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (r == DialogResult.No)
                {
                    return;
                }
            }
            resetStep1();
            btn_captureIris.Enabled = true;

            if (!devInited) panel_vedioImage.Visible = true;

            btn_collectInfoClick = false;
            btn_collectListClick = false;
            btn_settinClick = false;
            btn_recognitionClick = false;
            btn_writeDataClick = true;

            btn_writeData.BringToFront();
            btn_collectInfo.Back = Color.Transparent;
            btn_setting.Back = Color.Transparent;
            btn_collectList.Back = Color.Transparent;
            btn_recognition.Back = Color.Transparent;
            btn_writeData.Back = ColorTranslator.FromHtml("#56a3f2");


            insertService.setToFirst(panel_Insert);
            insertService.SetPanelControl(panel_Insert, "writeData");
            
        }
        private void show5()
        {
            if (!btn_writeDataClick)
                btn_writeData.Back = ColorTranslator.FromHtml("#56a3f2");
        }
        private void hide5()
        {
            if (!btn_writeDataClick)
                btn_writeData.Back = Color.Transparent;
        }
        private void btn_writeData_MouseClick(object sender, MouseEventArgs e)
        {
            click5();
        }

        private void btn_writeData_MouseHover(object sender, EventArgs e)
        {
            show5();
        }

        private void btn_writeData_MouseLeave(object sender, EventArgs e)
        {
            hide5();
        }

        private void pic_writeData_MouseClick(object sender, MouseEventArgs e)
        {
            click5();
        }

        private void pic_writeData_MouseHover(object sender, EventArgs e)
        {
            show5();
        }

        private void pic_writeData_MouseLeave(object sender, EventArgs e)
        {
            hide5();
        }

        private void label_writeData_MouseClick(object sender, MouseEventArgs e)
        {
            click5();
        }

        private void label_writeData_MouseHover(object sender, EventArgs e)
        {
            show5();
        }

        private void label_writeData_MouseLeave(object sender, EventArgs e)
        {
            hide5();
        }
        #endregion


        #region 按钮
        //修改密码
        private void btn_editPassword_Click(object sender, EventArgs e)
        {
            IOM_cs.insertForm.sysSetting.EditPassWord editPassword = new IOM_cs.insertForm.sysSetting.EditPassWord(FormLogin.user);
            editPassword.Show();
        }
        private void btn_editPassword_MouseHover(object sender, EventArgs e)
        {
            label_tip1.Visible = true;
        }

        private void btn_editPassword_MouseLeave(object sender, EventArgs e)
        {
            label_tip1.Visible = false;
        }

        // 退出登录
        private void btn_logout_Click(object sender, EventArgs e)
        {
            Process.Start(Application.ExecutablePath);
            Application.Exit();
        }
        private void btn_logout_MouseHover(object sender, EventArgs e)
        {
            label_tip2.Visible = true;
        }

        private void btn_logout_MouseLeave(object sender, EventArgs e)
        {
            label_tip2.Visible = false;
        }

        // 最小化
        private void btn_min_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;   //最小化
        }

        private void btn_min_MouseHover(object sender, EventArgs e)
        {
            label_tip3.Visible = true;
        }

        private void btn_min_MouseLeave(object sender, EventArgs e)
        {
            label_tip3.Visible = false;
        }

        // 关闭软件
        private void btn_close_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs ev)
        {
            try
            {
                //SDT_ClosePort(1001);
                try
                {
                    string[] dirs = Directory.GetFiles(System.Windows.Forms.Application.StartupPath, "*.bmp");
                    foreach (string dir in dirs)
                    {
                        File.Delete(dir);
                    }
                }
                catch (Exception ex)
                {

                }

                FormLogin.formLogin.Close();
                Environment.Exit(0);
                string msg = "注册界面正常关闭!";
                LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg);
            }
            catch (Exception ex)
            {
                string msg = "注册界面去初始化出错:" + ex.Message;
                LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg);
            }

        }

        private void btn_close_MouseHover(object sender, EventArgs e)
        {
            label_tip4.Visible = true;
        }

        private void btn_close_MouseLeave(object sender, EventArgs e)
        {
            label_tip4.Visible = false;
        }
        #endregion


        #region 窗体拖动
        // 窗体拖动
        private void panel_title_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                mouseOff = new Point(-e.X, -e.Y); //得到变量的值
                leftFlag = true;                  //点击左键按下时标注为true;
            }
        }
        // 窗体拖动
        private void panel_title_MouseMove(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                Point mouseSet = Control.MousePosition;
                mouseSet.Offset(mouseOff.X, mouseOff.Y);  //设置移动后的位置
                Location = mouseSet;
            }
        }
        // 窗体拖动
        private void panel_title_MouseUp(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                leftFlag = false;//释放鼠标后标注为false;
            }
        }
        #endregion


        #endregion


        #region tool

        /// <summary>
        /// base64编码的文本转为图片
        /// </summary>
        public Bitmap Base64StringToImage(string basestr)
        {
            Bitmap bitmap = null;
            try
            {
                String inputStr = basestr;
                byte[] arr = Convert.FromBase64String(inputStr);
                MemoryStream ms = new MemoryStream(arr);
                Bitmap bmp = new Bitmap(ms);
                ms.Close();
                ms.Dispose();
                bitmap = bmp;
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Base64StringToImage 转换失败\nException:" + ex.Message);
            }

            return bitmap;
        }


        //计算年龄
        private string countAge(DateTime birthday)
        {
            string ageS = "";
            if (null != birthday)
            {
                DateTime now = DateTime.Now;
                int age = now.Year - birthday.Year;
                //再考虑月、天的因素
                if (now.Month < birthday.Month || (now.Month == birthday.Month && now.Day < birthday.Day))
                {
                    age--;
                }
                ageS = age.ToString();
            }

            return ageS;
        }

        #endregion

        private void tabPage1_Click(object sender, EventArgs e)
        {
            if (treeView_dept.Visible == true) treeView_dept.Visible = false;
        }

        private void txt_dept_Leave(object sender, EventArgs e)
        {
            treeView_dept.Visible = false;
        }

        private void treeView_dept_Leave(object sender, EventArgs e)
        {
            treeView_dept.Visible = false;
        }

        private void comboBox_collType_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox_collType.SelectedIndex > -1) txt_collType.Text = comboBox_collType.SelectedItem.ToString();
        }

       




























        // 解决控件加载花屏问题        
        //protected override CreateParams CreateParams
        //{
        //    get
        //    {
        //        var parms = base.CreateParams;
        //        parms.Style &= ~0x02000000;
        //        return parms;
        //    }
        //}
        //protected override CreateParams CreateParams
        //{

        //    get
        //    {
        //        CreateParams cp = base.CreateParams;

        //        cp.ExStyle |= 0x02000000;

        //        return cp;

        //    }

        //}


    }
}