Q: Jogar valor de um grid que esta em form para outro grid em outro form C# windows form Olá estou eu aqui com mais uma situação solicitando ajuda pois ainda não há encontrei nas pesquisas.
 Tenho um form que coloquei um Gridview, no form tem botão para abrir outro form de consulta e quando clicar em um item da lista ele adicione no form que já está aberto  com o grid vazio ainda segue código que estou tentando usar: 
Esse é o form inicial onde contem o botão
  public partial class frmPedidos : Form
{

    public frmPedidos()
    {
        InitializeComponent();
    }

    ConexaoClienteDataContext cc = new ConexaoClienteDataContext();

    private void btnProcSabor_Click(object sender, EventArgs e)
    {


        frmSlaveConsultaProduto _frmPRoduto = new frmSlaveConsultaProduto();
        if (_frmPRoduto.ShowDialog() != DialogResult.OK)
            return;
        dgvItemPedido.CurrentRow.Cells[1].Value = _frmPRoduto.Codigo;
        dgvItemPedido.CurrentRow.Cells[3].Value = _frmPRoduto.Valor;
    }
}

esse seria form de consulta e que permitirá clicar e enviar para o outro grid do form principal
 public partial class frmSlaveConsultaProduto : Form
{
        public int Codigo { get;  set; }
        public string Nome { get;  set; }
        public double Valor { get;  set; }
        public int quantidade { get;  set; }

    public frmSlaveConsultaProduto()
    {
        InitializeComponent();
    }
    ConexaoClienteDataContext cc = new ConexaoClienteDataContext();
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {



      Codigo=Convert.ToInt32( dgvPesquisaProd.CurrentRow.Cells[0].Value.ToString());
       Valor = Convert.ToDouble(dgvPesquisaProd.CurrentRow.Cells[2].Value.ToString());
        this.DialogResult = DialogResult.OK;

    }

do jeito que está ele retorna um erro:
Additional information: Referência de objeto não definida para uma instância de um objeto.
Desde já agradeço a ajuda.


A: Recomendo trocar o evento CellContentClick pelo CellMouseDoubleClick para que o usuário dê dois cliques para selecionar o registro desejado.
O Erro de referência pode estar acontecendo porque o .Value da Cell pode ser nulo, e utilizaria o Index da Row que foi clicada. Segue código de exemplo:
    public int Codigo { get; set; }

    private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        if (e.RowIndex >=0) //verifica se não clicou no header da coluna 
        {
            //Considerando que a Cell 0 nunca será nulo, não fiz a validação
            this.Codigo = (int)((DataGridView)sender).Rows[e.RowIndex].Cells[0].Value;
        }
    }

Na parte do Form de Pedidos:
private void btnProcSabor_Click(object sender, EventArgs e)
{
    frmSlaveConsultaProduto _frmPRoduto = new frmSlaveConsultaProduto();
    if (_frmPRoduto.ShowDialog() == DialogResult.OK)
    {
        //Certeza que aqui você tem uma CurrentRow ? 

        dgvItemPedido.CurrentRow.Cells[1].Value = _frmPRoduto.Codigo;
    }
}

