protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (TinhTrangBaiLam == TinhTrang.DangLamBai)
            {
                e.Handled = true;
                int intViTriTu = ViTriTu("KhoangTrong", false);
                if (intViTriTu != -1)
                {
                    KhoangTrong ktKhoangTrong = (KhoangTrong)DanhSachTu[intViTriTu];
                    DanhSachTu.Remove(DanhSachTu[intViTriTu]);

                    int index       = SelectionStart - ktKhoangTrong.ViTri;
                    int removeIndex = ktKhoangTrong.NoiDung.IndexOf('.', index);
                    if (removeIndex >= 0)
                    {
                        ktKhoangTrong.NoiDung = ktKhoangTrong.NoiDung.Remove(removeIndex, 1);
                        ktKhoangTrong.NoiDung = ktKhoangTrong.NoiDung.Insert(index, e.KeyChar.ToString());
                        SelectionStart        = ktKhoangTrong.ViTri + removeIndex;
                        SelectionLength       = 1;
                        SelectedText          = "";
                        SelectionStart        = ktKhoangTrong.ViTri + index;
                        SelectionLength       = 0;
                        SelectedText          = e.KeyChar.ToString();
                    }
                    DanhSachTu.Insert(intViTriTu, ktKhoangTrong);
                }
                else
                {
                    intViTriTu = ViTriTu("TuInNghieng", true);
                    if (intViTriTu > -1)
                    {
                        TuInNghieng tinTu = (TuInNghieng)DanhSachTu[intViTriTu];
                        if (SelectionStart > tinTu.ViTri)
                        {
                            SelectionStart  = SelectionStart - 1;
                            SelectionLength = 1;
                            char chrKyTu = SelectedText[0];
                            chrKyTu       = QuanLyDau.ChuyenDoi(chrKyTu, e.KeyChar);
                            SelectedText  = chrKyTu.ToString();
                            tinTu.NoiDung = tinTu.NoiDung.Remove(SelectionStart - tinTu.ViTri - 1, 1);
                            tinTu.NoiDung = tinTu.NoiDung.Insert(SelectionStart - tinTu.ViTri - 1, chrKyTu.ToString());
                        }
                    }
                }
            }
        }
        //DanhSachSoQuiUoc: Danh sách số kí tự '.' được qui ước là vùng có thể đánh chữ.
        public void DocDe(string strFileNoiDung, string strFileDapAn, string strDanhSachSoQuiUoc)
        {
            strDanhSachSoQuiUoc = strDanhSachSoQuiUoc.Replace(" ", "");
            string[] DanhSachSoQuiUocs = strDanhSachSoQuiUoc.Split(',');
            //DanhSachTu.Clear();
            TinhTrangBaiLam = TinhTrang.DangLamBai;
            ReadOnly        = false;
            RichTextBox rtbTam = new RichTextBox();

            try
            {
                rtbTam.LoadFile(strFileNoiDung);
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message);
            }
            DanhSachTu.Clear();
            DapAn.Clear();
            DapAn = FileLuyenTapBUS.LayDapAn(strFileDapAn);
            bool blnFlag = false;

            rtbTam.SelectionLength = 1;
            for (int i = 0; i < rtbTam.Text.Length; ++i)
            {
                rtbTam.SelectionStart = i;
                if (rtbTam.SelectionFont.Italic)
                {
                    string strTuInNghieng = "";
                    do
                    {
                        strTuInNghieng += rtbTam.SelectedText;
                        rtbTam.SelectionStart++;
                        //++i;
                    } while (rtbTam.SelectionFont.Italic);
                    TuInNghieng tinTuIngNghieng = new TuInNghieng();
                    tinTuIngNghieng.ViTri   = i;
                    tinTuIngNghieng.NoiDung = strTuInNghieng;
                    DanhSachTu.Add(tinTuIngNghieng);
                    i += strTuInNghieng.Length;
                }
                else if (rtbTam.Text[i] == '.')
                {
                    int j = 1;
                    while (i + j < rtbTam.Text.Length && rtbTam.Text[i + j] == '.')
                    {
                        ++j;
                    }

                    if (LaMotTrongSo(j, DanhSachSoQuiUocs))
                    {
                        if (!blnFlag)
                        {
                            rtbTam.SelectionStart = i;
                            blnFlag = true;
                        }
                        KhoangTrong ktKhoangTrong = new KhoangTrong();

                        // Region Le Van Long
                        ktKhoangTrong.NoiDung = rtbTam.Text.Substring(i, j);
                        //for (int c = 0; c < j; ++c)
                        //{
                        //    ktKhoangTrong.NoiDung = ktKhoangTrong.NoiDung.Insert(0, ".");
                        //}
                        // Endregion

                        ktKhoangTrong.ViTri = i;
                        DanhSachTu.Add(ktKhoangTrong);
                    }

                    i = i + j;
                }
                else if (rtbTam.Text[i] == '(')
                {
                    int intVitriDongNgoac = rtbTam.Text.IndexOf(')', i);
                    if (intVitriDongNgoac > i)
                    {
                        if (!blnFlag)
                        {
                            rtbTam.SelectionStart = i + 1;
                            blnFlag = true;
                        }

                        NhomTu ntNhomTu = new NhomTu();
                        ntNhomTu.ViTri   = i + 1;
                        ntNhomTu.NoiDung = rtbTam.Text.Substring(i + 1, intVitriDongNgoac - i - 1);
                        DanhSachTu.Add(ntNhomTu);
                    }
                }
            }
            try
            {
                LoadFile(strFileNoiDung);
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message);
            }

            if (DanhSachTu.Count > 0)
            {
                SelectionStart = DanhSachTu[0].ViTri;
            }
        }