private void gridPrincipal_DoubleClick(object sender, EventArgs e)
 {
     if (gridPrincipal.Rows.Count > 0 && gridPrincipal.CurrentRow != null)
     {
         cadastro = gridPrincipal.CurrentRow.DataBoundItem as Entidades.Livro;
         RealizarCadastro();
     }
 }
        //métodos

        private void CancelarCadastro()
        {
            this.Enabled                     = true;
            gridPrincipal.Enabled            = true;
            gridPrincipal.Height             = GridAlturaNormal;
            panelCadastro.Visible            = false;
            btnNovo.Enabled                  = true;
            btnSalvar.Enabled                = false;
            txtNome.Text                     = "";
            listboxAutores.DataSource        = null;
            cmbCategoria.DataSource          = null;
            cmbAutoresDisponiveis.DataSource = null;
            cadastro           = null;
            autores            = null;
            autoresDisponiveis = null;
            gridPrincipal.Focus();
        }
 private void btnSalvar_Click(object sender, EventArgs e)
 {
     this.Enabled = false;
     using (var db = new Contextos.ContextoGeral())
     {
         if (cadastro == null)
         {
             var livro = new Entidades.Livro();
             livro.Nome = txtNome.Text;
             var categoria = cmbCategoria.SelectedItem as Entidades.Categoria;
             livro.Categoria = db.Categorias.FirstOrDefault(x => x.CategoriaId == categoria.CategoriaId);
             foreach (var autor in autores)
             {
                 livro.Autores.Add(db.Autores.FirstOrDefault(x => x.AutorId == autor.AutorId));
             }
             db.Livros.Add(livro);
             if (db.SaveChanges() > 0)
             {
                 CarregarTela();
                 CancelarCadastro();
             }
         }
         else
         {
             var livro = db.Livros.Include("Categoria").Include("Autores").FirstOrDefault(x => x.LivroId == cadastro.LivroId);
             if (livro != null)
             {
                 livro.Nome = txtNome.Text;
                 var categoria = cmbCategoria.SelectedItem as Entidades.Categoria;
                 livro.Categoria = db.Categorias.FirstOrDefault(x => x.CategoriaId == categoria.CategoriaId);
                 foreach (var autor in autores)
                 {
                     if (livro.Autores.Count(x => x.AutorId == autor.AutorId) <= 0)
                     {
                         livro.Autores.Add(db.Autores.FirstOrDefault(x => x.AutorId == autor.AutorId));
                     }
                 }
                 db.SaveChanges();
                 CarregarTela();
                 CancelarCadastro();
             }
         }
     }
 }