Como passar objeto por parametro C#

Ola boa tarde.
Tenho seguinte código.

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

namespace Concessionaria
{
    public partial class FrmCadVeiculos : Form
    {
        public FrmCadVeiculos()
        {
            InitializeComponent();
        }

        private Veiculo montaCadastro()
        {
            Veiculo veiculo = new Veiculo();
            veiculo.Id = int.Parse(txtCodVeiculo.Text);
            veiculo.Modelo = txtModelo.Text;
            veiculo.Ano = int.Parse(txtAno.Text);
            veiculo.Preco = float.Parse(txtPreco.Text);
            veiculo.Fab = //AJUDA AQUI !!!!!!!!!!!!!!!!!!!!!!!

            return veiculo;
        }

        private void label4_Click(object sender, EventArgs e)
        {

        }

        private void FrmCadVeiculos_Load(object sender, EventArgs e)
        {
            cmbFabricante.Text = "Escolha um Fabricante";
            ArrayList lista = new FabricanteDAO().getFabricantes();
            for (int i = 0; i < lista.Count; i++)
            {
                Fabricante fab = (Fabricante)lista[i];
                cmbFabricante.Items.Add(fab.Id + "-" + fab.Descricao);
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            Veiculo fabricante = montaCadastro();
            String msg = new FabricanteDAO().gravarFabricante(fabricante);
            if (msg != "")
            {
                MessageBox.Show(msg, "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}

</bbcode>

<bbcode>
  using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Concessionaria
{
    class Veiculo
    {
        public Veiculo (int id, string modelo, int ano, float preco, Fabricante fab)
        {
            this.Id = id;
            this.Modelo = modelo;
            this.Ano = ano;
            this.Preco = preco;
            this.Fab = fab;
        }
        public int Id { get; set; }
        public string Modelo { get; set; }
        public int Ano { get; set; }
        public float Preco { get; set; }
        public Fabricante Fab { get; set; }

    }
}

</bbcode>

<bbcode>
   using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Concessionaria
{
    class VeiculoDAO
    {
        public bool verificaVeiculo(Veiculo veiculo)
        {
            string sql;
            bool resp;

            try
            {
                sql = "SELECT modelo FROM veiculo WHERE ID_fabricante=@cmbFabricante AND modelo=@txtModelo";
                SqlConnection conexao = Conecta.getConexao();
                SqlCommand cmd = conexao.CreateCommand();
                cmd.CommandText = sql;

                cmd.Parameters.AddWithValue("@txtModelo", veiculo.Modelo);
                SqlDataReader dr = cmd.ExecuteReader();

                if (dr.HasRows)
                {
                    resp = true;
                }
                else
                {
                    resp = false;
                }
            }
            catch (SqlException ex)
            {
                MessageBox.Show("Falha na consulta\n" + ex.ToString(), "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                resp = false;
            }
            return resp;
        }
        public string gravarVeiculo(Veiculo veiculo)
        {
            string sql;
            int retorno;
            string resp = "";

            if(verificaVeiculo(veiculo))
            {
                MessageBox.Show("Modelo já cadastrado para esse fabricante\n", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    SqlConnection conexao = Conecta.getConexao();
                    sql = "INSERT INTO veiculo ( ID, modelo, ano, preco, ID_frabricante)";
                    sql += "VALUES ( @txtCodVeiculo, @txtModelo, @txtAno, @txtPreco, @cmbFabricante)";

                    SqlCommand cmd = conexao.CreateCommand();
                    cmd.CommandText = sql;
                    cmd.Parameters.AddWithValue("@txtCodVeiculo", veiculo.Id);
                    cmd.Parameters.AddWithValue("@txtModelo", veiculo.Modelo);
                    cmd.Parameters.AddWithValue("@txtAno", veiculo.Ano);
                    cmd.Parameters.AddWithValue("@txtPreco", veiculo.Preco);
                    cmd.Parameters.AddWithValue("@cmbFabricante", veiculo.Fab);

                    retorno = cmd.ExecuteNonQuery();

                    if (retorno > 0)
                    {
                        resp = "Cadastro Efetuado !";
                    }
                    else
                    {
                        resp = "Cadastro não realizado !";
                    }

                    cmd.Dispose();
                    conexao.Dispose();
                }
                catch (SqlException ex)
                {
                    resp = "ERRO: " + ex.ToString();
                }
            }
 
            return resp;
        }
    }
}

A duvida é a seguinte como eu passo o objeto fabricante para meu método Fab do tipo frabricante e como eu mando apenas o ID do fabricante para o banco de dados ?

// Está correto. quando você instancia a classe Veiculo deverá estar nesse modelo: Veiculo veiculo = new Veiculo(id, modelo, ano, peco, fab)
// Dessa forma você está criando uma isntancia da classe veículo e inicializando-a com os valores passados no construtor da mesma.

class Veiculo
{
    public Veiculo (int id, string modelo, int ano, float preco, Fabricante fab)
    {
        this.Id = id;
        this.Modelo = modelo;
        this.Ano = ano;
        this.Preco = preco;
        this.Fab = fab;
    }
    public int Id { get; set; }
    public string Modelo { get; set; }
    public int Ano { get; set; }
    public float Preco { get; set; }
    public Fabricante Fab { get; set; }
}

Recuperar id do Fabricante.

  cmd.Parameters.AddWithValue("@txtPreco", veiculo.Preco);
  // Recuperando o ID do Fabricante.
  cmd.Parameters.AddWithValue("@cmbFabricante", veiculo.Fab.Id);
   retorno = cmd.ExecuteNonQuery();