A veces, por “exigencias del guión”, debemos de tener en nuestro DataGridView enlazado a datos columnas descriptivas que no están asociadas a ningún campo de la tabla. Por ejemplo, si escribimos en una Celda un Código (que podría ser un Codigo de Barras, etc…) y queremos que en la columna adjunta aparezca su Descripción.
Además de ello, para no incrementar el número de pulsaciones de teclado, queremos que salte de la Columna 1 (que podría ser la del código a la posible columna 3 (que la llamaremos cantidad para este ejemplo), sin tener que pasar por la columna 2.
Pues bien, para crear este tipo de columna en un DataGridView nos vemos obligados a crear dos clases que hereden del tipo DataGridViewTextBoxCell y del DataGridViewTextBoxColumn.
En la clase que herede de DataGridViewTextBoxCell sobreescribimos el método OnEnter y añadimos lo siguiente:
base.DetachEditingControl();
SendKeys.Send("{tab}");
Después, en la clase DataGridViewTextBoxColumn, en el contructor tenemos que añadir lo siguiente:
base.CellTemplate = new NombreDeLaClaseQueHeredaDeDataGridViewTextBoxCell();
base.ReadOnly = true;
Finalmente, simplemente vamos al DataGridView, editamos el tipo de columna (que después de una compilación del proyecto sale automáticamente en los tipos de columna disponibles en el editor) y ya tenemos una columna que no se puede seleccionar y ahorrará al usuario una pulsación de teclado.

Hola lo estuve probando pero al final la sentencia : base.DetachEditingControl(); me genera una excepcion el codigo lo pase a VB.Net no se enque estare fallando, realize todos esos pasos.. estara mal??
Help me!!
Como realizar una busqueda en un datagridview pero enlazdo con XML no con una base de datos
Como unir celdas en el DataGridView??..ya que en visual 6.0 existe la propiedad MergeCells, en .NET no……..