private void btnSearch_Click(object sender, EventArgs e)
        {
            CardConnectForm frmCardConnect = new CardConnectForm();
            frmCardConnect.ShowDialog();

            if (frmCardConnect.cardNo == "")
                return;

            studentsPreregBindingSource.MoveFirst();
            while (dgvPreregStudents.SelectedRows[0].Cells["CardNoColumn"].Value.ToString() != frmCardConnect.cardNo
                && dgvPreregStudents.SelectedRows[0].Index < dgvPreregStudents.Rows.Count - 1)
            {
                studentsPreregBindingSource.MoveNext();
            }
        }
        private void btnCardConnect_Click(object sender, EventArgs e)
        {
            if (dgvStudents.SelectedRows.Count <= 0)
                return;
            DataGridViewRow row = dgvStudents.SelectedRows[0];

            // 获取卡号
            CardConnectForm frmCardConnect = new CardConnectForm();
            frmCardConnect.ShowDialog();
            if (frmCardConnect.cardNo == "")
                return;

            // 查询是否有卡号冲突
            DataRow[] rows = studentsDataSet.CardList.Select("CardNo = '" + frmCardConnect.cardNo + "'");
            if (rows.Length > 0)
            {
                DataRow cardInfoRow = rows[0];
                MessageBox.Show("该卡片[" + frmCardConnect.cardNo + "]已被学生["
                    + cardInfoRow.Field<string>("Name") + "]所使用,请使用新卡片", "卡号已被使用",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            };

            // 获取卡号的类型
            CardTypeSelectForm frmCardTypeSelect = new CardTypeSelectForm();
            if (frmCardTypeSelect.ShowDialog() != DialogResult.OK)
                return;
            int cardType = frmCardTypeSelect.CardType;
            string cardTypeName = "";
            switch (cardType)
            {
                case 0:
                    cardTypeName = "普通卡";
                    break;
                case 1:
                    cardTypeName = "VIP卡";
                    break;
            }

            // 显示确认对话框
            ConfirmCardConnectForm frmConfirmCardConnect = new ConfirmCardConnectForm();
            frmConfirmCardConnect.CardNo = frmCardConnect.cardNo;
            frmConfirmCardConnect.CardType = cardTypeName;
            frmConfirmCardConnect.StudentName = txtName.Text;
            frmConfirmCardConnect.StudentSex = row.Cells["SexColumn"].Value.ToString();
            frmConfirmCardConnect.StudentBirthday = row.Cells["BirthdayColumn"].Value.ToString();
            frmConfirmCardConnect.StudentAddress = row.Cells["AddressColumn"].Value.ToString();
            frmConfirmCardConnect.StudentPhone = row.Cells["PhoneColumn"].Value.ToString();
            frmConfirmCardConnect.StudentFartherName = row.Cells["FartherNameColumn"].Value.ToString();
            frmConfirmCardConnect.StudentFartherPhone = row.Cells["FartherTelColumn"].Value.ToString();
            frmConfirmCardConnect.StudentFartherWork = row.Cells["FartherWorkColumn"].Value.ToString();
            frmConfirmCardConnect.StudentMotherName = row.Cells["MotherNameColumn"].Value.ToString();
            frmConfirmCardConnect.StudentMotherPhone = row.Cells["MotherTelColumn"].Value.ToString();
            frmConfirmCardConnect.StudentMotherWork = row.Cells["MotherWorkColumn"].Value.ToString();

            if (frmConfirmCardConnect.ShowDialog() != DialogResult.OK)
                return;

            // 更新卡号信息
            studentsTableAdapter.UpdateCardInfo(frmCardConnect.cardNo, cardType, int.Parse(txtID.Text));

            // 刷新界面
            txtCardNo.Text = frmCardConnect.cardNo;
            txtCardType.Text = cardTypeName;
            row.Cells["CardNoColumn"].Value = txtCardNo.Text;
            row.Cells["CardTypeNameColumn"].Value = cardTypeName;
        }
        private void btnSearchByCardNo_Click(object sender, EventArgs e)
        {
            CardConnectForm frmCardConnect = new CardConnectForm();
            frmCardConnect.ShowDialog();

            if (frmCardConnect.cardNo == "")
                return;

            foreach (DataGridViewRow row in dgvStudents.Rows)
            {
                if (row.Cells["CardNoColumn"].Value.ToString() == frmCardConnect.cardNo)
                {
                    studentsBindingSource.Position = row.Index;
                    positionChange(row.Index);
                    return;
                }
            }
            MessageBox.Show("找不到卡号为“" + frmCardConnect.cardNo + "”的学生",
                "找不到学生", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }