Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/09/2012, 00:27
Avatar de drako_darpan
drako_darpan
 
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 16 años, 1 mes
Puntos: 58
Respuesta: CheckBox con DataGridView en C#

Bueno pues por fin pude encontrar algo que me sirve.

La solucion es pintar la celda y con eso se elimina un borde en este caso el del lado derecho. Aunque claro esta que el usuario va a notar dicha columna pero es lo que hasta el momento e encontrado.

Todo va en el CellPainting:

Código C#:
Ver original
  1. // comprobar que la fila y columna son las adecuadas
  2. if (e.RowIndex >= 0 && (e.ColumnIndex == 3 || e.ColumnIndex==1))
  3. {
  4.    Color clrFondoCelda;
  5.    Color clrTextoCelda;
  6.    // en función de si la celda está o no seleccionada
  7.    // establecer los colores
  8.    if ((e.State & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected)
  9.    {
  10.         clrFondoCelda = SystemColors.Highlight;
  11.                     clrTextoCelda = SystemColors.Window;
  12.                 }
  13.                 else
  14.                 {
  15.                     clrFondoCelda = SystemColors.Window;
  16.                     clrTextoCelda = SystemColors.WindowText;
  17.                 }
  18.  
  19.                 // rellenar el rectángulo de la celda con el color correspondiente
  20.                 e.Graphics.FillRectangle(new SolidBrush(clrFondoCelda), e.CellBounds);
  21.  
  22.                 // dibujar solamente la línea vertical de la celda
  23.                 e.Graphics.DrawLine(new Pen(SystemColors.ActiveBorder),
  24.                 new Point(e.CellBounds.X, e.CellBounds.Y + e.CellBounds.Height - 1),
  25.                 new Point(e.CellBounds.X + e.CellBounds.Width, e.CellBounds.Y + e.CellBounds.Height - 1));
  26.  
  27.                 // si la celda tiene valor
  28.                 if (e.Value != null)
  29.                 {
  30.                     // calcular el tamaño del texto
  31.                     Size szTexto;
  32.                     szTexto = TextRenderer.MeasureText(e.Value.ToString(), e.CellStyle.Font);
  33.  
  34.                     // dibujar el texto
  35.                     TextRenderer.DrawText(e.Graphics, e.FormattedValue.ToString(), e.CellStyle.Font, e.CellBounds, clrTextoCelda);
  36.                 }
  37.  
  38.                 e.Handled = true;

Espero les sirva