Consultar dados no sqlserver, mostrar em textbox e em seguida adicionar a um datagridview

Estou fazendo um sistema de gerenciamento de vendas de uma padaria em C#.

Na tela de vendas coloquei três GroupBox:

Um para clientes, um para produtos e um para vendedor.

No groupBox Clientes existem dois textBox : um para inserir o código do cliente e o outro para mostrar o nome do cliente, de acordo com o código (nesse último textbox eu desabilitei a edição por properities do Visual C# 2008)

O groupBox Vendedor também segue a mesma regra do GroupBox de Clientes: dois textbox (um para inserir o código do vendedor e outro para mostrar o nome do vendedor, este último desablitado para edição)

O groupBox Produto também segue o principio dos anteriores e possui os seguintes campos (textBox):

  • Código do produto
  • Descrição do produto (desabilitado para edição)
  • Quantidade de Produtos
  • Valor Unitário(desabilitado para edição)
  • Valor Total(desabilitado para edição)

O que eu quero fazer é o seguinte:

Nos groupBox Cliente e Produto, assim que eu terminar de digitar o código, o nome do cliente e/ou do produto ser mostrado instantaneamente no textbox sem a necessidade de utilizar um botão para pesquisar.

No GroupBox de produto, assim que eu terminar de digitar o código, a descrição do produto e o valor unitário serão apresentados em seus respectivos textbox e, ao digitar a quantidade de unidades relacionada ao produto pesquisado, o valor total será apresentado imediatamente no texbox correspondente.

Em seguida, adicionar os dados do cliente, do vendedor e do produto consultado em dataGridView e, a cada produto adicionado ao dataGridView, ir somando os valores e no final da compra, apresentar o totall da compra num textBox.

Tentei fazer isso com dataset mas está dando um erro.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace MenuPadaria
{
    public partial class RealizarVenda : UserControl
    {
        SqlCommand cmd = null;
        SqlDataAdapter da = null;
        DataSet ds = null;


        public RealizarVenda()
        {
            InitializeComponent();
        }

        private void RealizarVenda_Load(object sender, EventArgs e)
        {

        }

        private void btRealizaVendaExibeDados_Click(object sender, EventArgs e)
        {
            Banco bd = new Banco();
            SqlConnection conexao = new SqlConnection(bd.pegaBD());
            cmd = new SqlCommand("GetProduto", conexao);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@Cod_Produto", txtRealizaVendaCodProduto.Text);


            conexao.Open();
            ds = new DataSet();
            da.Fill(ds, "Produto");  // dataset ds produtos (NESSE TRECHO ESTÁ O ERRO)
            conexao.Close();

            // Mostra dados no textBox
            if (ds.Tables[0].Rows.Count > 0)
            {


                txtRealizarVendaDescProduto.Text = ds.Tables[0].Rows[0].ItemArray[1].ToString();


            }

            else
            {
                MessageBox.Show("       Registro não encontrado!       ", "Mensagem");
                conexao.Close();
                txtRealizaVendaCodProduto.Clear();

            }
        }

    
        
    }
}