// Button làm bài ôn tập ở gridview.
        private void DgvPractice_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex != dgvPractice.Columns["war"].Index || e.RowIndex < 0)
            {
                return;
            }
            if (MessageBox.Show("Sẵn sàng làm bài thi?",
                                "Xác nhận", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }
            string MDT = dgvPractice.SelectedRows[0].Cells[0].Value.ToString();
            //MessageBox.Show(MDT);
            FormTest FT = new FormTest(MDT);

            FT.ShowDialog();
        }
        private void DgvSchedule_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex != dgvSchedule.Columns["war"].Index)
            {
                return;
            }

            DateTime NgayThi = DateTime.Parse(dgvSchedule.SelectedRows[0].Cells[2].Value.ToString());
            string   MKT     = dgvSchedule.SelectedRows[0].Cells[0].Value.ToString();

            // Lấy tgian quy định.
            ThoiGianLamBai = (int)dgvSchedule.SelectedRows[0].Cells[4].Value;

            //MessageBox.Show(t.CompareTo(DateTime.Now).ToString());

            if (dgvSchedule.SelectedRows[0].Cells[6].Value.ToString() == "Đóng" ||
                (NgayThi.Date.CompareTo(DateTime.Now.Date) != 0))
            {
                MessageBox.Show("Đã hết hạn làm bài thi");
                return;
            }
            else
            {
                TimeSpan BD  = DataUlti.LayThoiGianBD(MHS, MKT);
                TimeSpan now = DateTime.Now.TimeOfDay;
                if (BD != null && BD.Subtract(now).TotalMinutes > ThoiGianLamBai)
                {
                    MessageBox.Show("Đã hết hạn làm bài thi");
                    return;
                }
            }



            using (var ds = new QuanLyThiTracNghiemDataContext())
            {
                try
                {
                    var q = ds.DSDUTHIs.Where(d => d.MaHocSinh == MHS && d.MaKyThi == MKT).SingleOrDefault();
                    if (q != null)
                    {
                        if (q.DaThi == true)
                        {
                            MessageBox.Show("Bài thi đã được hoàn thành");
                            return;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
            }



            //MessageBox.Show(MDT);
            if (MessageBox.Show("Sẵn sàng làm bài thi?",
                                "Xác nhận", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }
            string MDT = null;

            // Kiểm tra xem có đang làm bài dang dở.
            if (DataUlti.TiepTucThi(MHS, MKT) == false)
            {
                // Bốc đề ngẫu nhiên trong kỳ thi.
                var    q        = DataUlti.LayDeThi(MKT);
                Random roulette = new Random();
                MDT = q[roulette.Next(0, q.Count)].MaDeThi;

                // Bắt đầu làm bài:
                DataUlti.BatDauThi(MHS, MKT, MDT);
            }
            else
            {
                // Kiểm tra tgian làm bài:
                TimeSpan now     = DateTime.Now.TimeOfDay;
                TimeSpan lastLog = DataUlti.LayThoiGianBD(MHS, MKT);
                if (now.Subtract(lastLog).TotalMinutes > ThoiGianLamBai)
                {
                    MessageBox.Show("Đã hết hạn làm bài");
                    return;
                }

                // Tiếp tục.
                MDT = DataUlti.DSThi(MKT)
                      .Where(d => d.MaHocSinh == MHS && d.MaKyThi == MKT)
                      .Select(d => d.MaDeThi).SingleOrDefault().ToString();
            }
            FormTest FT = new FormTest(MHS, MDT, MKT, true, ThoiGianLamBai);

            FT.ShowDialog();

            LoadResult();
        }