private void btnThem_Click(object sender, EventArgs e)
        {
            DialogResult dlr = MessageBox.Show("Bạn có chắc muốn thêm hóa đơn mới?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (dlr == DialogResult.Yes)
            {
                txtMaHD.Text          = HOADONDVDAO.MaHDDVTuDong(dsHDDV);
                txtSDT.Enabled        = true;
                txtTenKH.Enabled      = true;
                dateNgayLapHD.Enabled = true;
                btnThem.Enabled       = false;
                btnLuu.Enabled        = true;
            }
        }
 private void btnLuu_Click(object sender, EventArgs e)
 {
     if (kttxtHDDV())
     {
         DialogResult dlr = MessageBox.Show("Bạn có chắc muốn lưu hóa đơn này?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
         if (dlr == DialogResult.Yes)
         {
             String sql = "insert into hd_dichvu values ('" + txtMaHD.Text.Trim() + "', '" + dateNgayLapHD.Text.Trim() + "', N'" + txtTenKH.Text.Trim() + "', '" + txtSDT.Text.Trim() + "', 0, '" + DangNhap.MaNV + "')";
             cn.themxoasua(sql);
             HOADONDVDAO.ThemHDDV(dsHDDV, txtMaHD.Text.Trim(), txtTenKH.Text.Trim(), txtSDT.Text.Trim(), dateNgayLapHD.Text.Trim(), DangNhap.MaNV);
             dgvHDDV.Rows.Add(txtMaHD.Text.Trim(), txtTenKH.Text.Trim(), txtSDT.Text.Trim(), dateNgayLapHD.Text.Trim(), DangNhap.MaNV);
             cbboxMaHD.Items.Add(txtMaHD.Text.Trim());
             LamMoiHDDV();
         }
     }
 }
        private void btnIn_Click(object sender, EventArgs e)
        {
            List <CHITIETHOADON> ds = CHITIETHOADONDVDAO.dsCTHDDVTheoMaHD(dsCTHDDV, cbboxMaHD.SelectedItem.ToString().Trim());
            string line4            = "";
            string mahd             = "";

            foreach (CHITIETHOADON sp in ds)
            {
                int    lengthten     = DICHVUDAO.TenDV(QuanLyDichVu.dsDV, sp.getMasp()).Length;
                int    lengthsoluong = sp.getSoluong().ToString().Length;
                int    length        = 20 - lengthten;
                int    length2       = 16 - lengthsoluong;
                string khoangcach    = "";
                string khoangcach2   = "";
                for (int i = 0; i < length; i++)
                {
                    khoangcach += " ";
                }
                for (int i = 0; i < length2; i++)
                {
                    khoangcach2 += " ";
                }

                mahd   = sp.getMahd();
                line4 += DICHVUDAO.TenDV(QuanLyDichVu.dsDV, sp.getMasp()) + khoangcach + sp.getSoluong() + khoangcach2 + sp.thanhtien(SANPHAMDAO.GiaMaSP(QuanLyHangHoa.dsSP, sp.getMasp())) + "\n";
            }
            string[] lines = { "                                Hóa Đơn\n", "Tên khách hàng: " + HOADONDVDAO.TenKhachHang(dsHDDV, mahd) + "\n", "Mã hóa đơn: " + mahd + "\n", "Tên Sản Phẩm      Số lượng      Thành tiền", line4, "Tổng tiền: " + txtTongTien.Text };
            // WriteAllText creates a file, writes the specified string to the file,
            // and then closes the file.    You do NOT need to call Flush() or Close().
            System.IO.File.WriteAllLines(@"C:\DevPrograms\DoAnCongNghePhanMem (2)\Phan tich thiet ke HTTT\Phan tich thiet ke HTTT\BanIn\In.txt", lines);

            ProcessStartInfo startInfo = new ProcessStartInfo();

            startInfo.FileName = @"C:\DevPrograms\DoAnCongNghePhanMem (2)\Phan tich thiet ke HTTT\Phan tich thiet ke HTTT\BanIn\In.txt"; // Your absolute PATH

            Process.Start(startInfo);
        }