Foros del Web » Programación para mayores de 30 ;) » .NET »

CheckBox con DataGridView en C#

Estas en el tema de CheckBox con DataGridView en C# en el foro de .NET en Foros del Web. Hola que tal, tengo un pequeño problema. Resulta que necesito anexar una columna CheckBox en un DataGridView en C#, con esta parte no tengo problemas, ...
  #1 (permalink)  
Antiguo 13/09/2012, 23:29
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
CheckBox con DataGridView en C#

Hola que tal, tengo un pequeño problema.

Resulta que necesito anexar una columna CheckBox en un DataGridView en C#, con esta parte no tengo problemas, el problema que tengo es que necesito anexarle una cadena a un lado, ejemplo:

____________
|Caja check| Hola
----------

E intentado de varias maneras, pero no logro encontrar como hacer para que me ponga el nombre que necesito a un lado del check box. Se me ocurrio meter una columna extra, donde estaria la etiqueta que necesito, pero se nota la linea que los separa y me piden que no se muestre dicha linea

Si alguien sabe, agradeceria me dijera como hacerlo

Nota: Es para un Windows Form.
  #2 (permalink)  
Antiguo 14/09/2012, 00:27
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
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

Etiquetas: checkbox, datagridview, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:24.