private void btnEditarCompromisso_Click(object sender, EventArgs e)
        {
            //MessageBox.Show(teste);

            // Reconfiguração da tela para o modo de edição.
            this.btnEditarCompromisso.Enabled = false;
            this.btnEditarCompromisso.Visible = false;

            this.btnVoltarCompromisso.Enabled = false;
            this.btnVoltarCompromisso.Visible = false;

            this.btnSalvarEdicao.Visible = true;
            this.btnSalvarEdicao.Enabled = true;

            this.btnCancelarEdicao.Visible = true;
            this.btnCancelarEdicao.Enabled = true;

            //this.btnConvidarContato.Visible = true;
            //this.btnRmvConvidado.Visible = true;

            this.txbAssuntoCompromisso.ReadOnly   = false;
            this.txbDescricaoCompromisso.ReadOnly = false;
            this.monthCalendarCompromisso.Enabled = true;
            this.mtxbHorarioCompromisso.ReadOnly  = false;
            this.chkBoxAtivo.AutoCheck            = true;

            // Coleta os dados atuais do item descrito no momento que o botão de edição é clicado.
            // Isso garante que poderemos voltar essas informações caso o usuário cancele a edição.
            lastAssunto   = txbAssuntoCompromisso.Text;
            lastDescricao = txbDescricaoCompromisso.Text;
            lastHorario   = mtxbHorarioCompromisso.Text;
            lastAtivo     = chkBoxAtivo.Checked;

            lastDataCompromisso = monthCalendarCompromisso.SelectionRange.Start.ToString();
            System.Globalization.CultureInfo myCulture = new System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.Name.ToString());
            DateTime myLastDataCompromisso             = DateTime.Parse(lastDataCompromisso, myCulture);

            DTO_Compromisso myCompromisso = new DTO_Compromisso();

            myCompromisso.codCompromisso = int.Parse(lblHiddenCod.Text);
            lastConvidados.Convidados    = BLL_Compromisso.verificarListaCompromisso(myCompromisso);

            //MessageBox.Show("Atenção: A lista de contatos é salva automaticamente, diferentemente dos outros campos, ela não voltará atrás ao cancelar a edição.", "ATENÇÃO", MessageBoxButtons.OK ,MessageBoxIcon.Warning);

            //MessageBox.Show("Assunto: " + lastAssunto + "\nDescricao: " + lastDescricao + "\nHorario: " + lastHorario + "\nData: " + myLastDataCompromisso.ToString() + "\nConvidados: " + lastConvidados.GetType());
        }
        private void btnCompromissoDetalhes_Click(object sender, EventArgs e)
        {
            this.Hide();

            // Instânciamento das classes utilizadas.

            Compromisso     telaDetCompromisso = new Compromisso();
            DTO_Compromisso obj_dtoCompromisso = new DTO_Compromisso();
            BLL_Compromisso obj_bllCompromisso = new BLL_Compromisso();
            DataGridViewRow mySelectedRow      = dataGridViewCompromissos.CurrentRow;

            // Guarda os dados selecionados no DTO.

            CultureInfo myCulture       = new CultureInfo(CultureInfo.CurrentCulture.Name.ToString());
            DateTime    dataCompromisso = DateTime.Parse(mySelectedRow.Cells[2].Value.ToString(), myCulture); // Cells[2] = dataCompromisso (dd/mm/yyyy) - validation needed.

            //MessageBox.Show(dataCompromisso.ToString("yyyy-MM-dd"));

            obj_dtoCompromisso.codCompromisso  = int.Parse(mySelectedRow.Cells[0].Value.ToString());  // Cells[0] = codCompromisso.
            obj_dtoCompromisso.assunto         = mySelectedRow.Cells[1].Value.ToString();             // Cells[1] = assunto.
            obj_dtoCompromisso.dataCompromisso = dataCompromisso.ToString("yyyy-MM-dd");              // Data validada.
            obj_dtoCompromisso.horario         = mySelectedRow.Cells[3].Value.ToString();             // Cells[3] = horario (hh:mm:ss).
            obj_dtoCompromisso.descricao       = mySelectedRow.Cells[4].Value.ToString();             // Cells[4] = descricao.
            obj_dtoCompromisso.estaAtivo       = bool.Parse(mySelectedRow.Cells[5].Value.ToString()); // Cells[5] = estaAtivo default 1 (true).

            // Define a exibição dos dados na UI Compromisso.

            telaDetCompromisso.Text = "Assunto do Compromisso: " + obj_dtoCompromisso.assunto;
            telaDetCompromisso.txbAssuntoCompromisso.Text   = obj_dtoCompromisso.assunto;
            telaDetCompromisso.txbDescricaoCompromisso.Text = obj_dtoCompromisso.descricao;
            telaDetCompromisso.monthCalendarCompromisso.SetDate(dataCompromisso);
            telaDetCompromisso.mtxbHorarioCompromisso.Text = obj_dtoCompromisso.horario;
            telaDetCompromisso.chkBoxAtivo.Checked         = obj_dtoCompromisso.estaAtivo;
            telaDetCompromisso.lblHiddenCod.Text           = obj_dtoCompromisso.codCompromisso.ToString();

            // Verifica se existem convidados nesse compromisso e atualiza a GridView da tela Compromisso de acordo...
            obj_dtoCompromisso.Convidados = BLL_Compromisso.verificarListaCompromisso(obj_dtoCompromisso);  // Deve retornar uma lista de convidados.

            List <DTO_Convidado> myConvidados = obj_dtoCompromisso.Convidados;                              // Atribui a lista de convidados do nosso obj_dtoCompromisso a uma variável.

            telaDetCompromisso.dataGridViewConvidadosCompromisso.DataSource = myConvidados;                 // Passa a lista para a DataTable da dataGridView.

            telaDetCompromisso.dataGridViewConvidadosCompromisso.Columns["codCompromisso"].Visible = false; // Oculta um campo indesejado.


            // Desabilita inicialmente a edição dos detalhes.

            //telaDetCompromisso.btnConvidarContato.Enabled = false;
            //telaDetCompromisso.btnRmvConvidado.Enabled = false;
            telaDetCompromisso.txbAssuntoCompromisso.ReadOnly   = true;
            telaDetCompromisso.txbDescricaoCompromisso.ReadOnly = true;
            telaDetCompromisso.monthCalendarCompromisso.Enabled = false;
            telaDetCompromisso.mtxbHorarioCompromisso.ReadOnly  = true;
            telaDetCompromisso.chkBoxAtivo.AutoCheck            = false;
            telaDetCompromisso.btnEditarCompromisso.Enabled     = true;
            telaDetCompromisso.btnEditarCompromisso.Visible     = true;

            // Exibe a tela com os detalhes.

            telaDetCompromisso.ShowDialog();
            atualizarCompromisso();
            this.Show();
        }