Datagrid Winforms

30/06/2004 - 11:09 por Anonimo | Informe spam
Hola señores.

Espero que alguien pueda ayudarme.

Tengo un DataGrid que cargo con una serie de filas de
BBDD.

Bien, el caso que cuando cargo un formulario que contiene
un datagrid, aparecen digamos una fila para las columnas
(los nombres de las columnas) y después todas las filas
(los datos)

A la izquierda de las filas aparece una columna en gris,
con una especie de flechita.

Si pulso el ratón sobre una fila, la fila se destaca con
un color azul, indicando la fila activa supongo.

Si luego tecleo la tecla flecha ABAJO, la flechita
aparecería en la siguiente fila, pero el color azul no
destaca la fila, desaparece y cuando pulso sobre una fila
vuelve a destacarse la fila con ese color azul.

Alguien sabe cómo puedo hacer que en el momento que la
flechita de la izquierda vaya pasando de una fila a otra,
la fila en la que esté la flechita, aparezca destacada
con ese color azul ?.

Un saludo foreros.
 

Leer las respuestas

#1 Yachakuq
30/06/2004 - 15:28 | Informe spam
Hola foreros:
Creas tu propio DataGrid personalizado, de esta manera:
using...
namespace ClasesPropias
{
#region DataGrid
/// <summary>
/// Representa un control de DataGrid de Windows
personalizado.
/// </summary>
public class MiDataGrid :
System.Windows.Forms.DataGrid
{
#region Override
protected override void WndProc(ref
Message m)
{
if (m.Msg == 0x0201 || m.Msg ==
0x0203)
{
int X = (int)m.LParam >>
16;
int Y = (int)m.LParam &
0xffff;
int T = this.GetCellBounds
(this.CurrentCell).Top;
int H = this.GetCellBounds
(this.CurrentCell).Height;
int L = this.GetCellBounds
(this.CurrentCell).Left;
int W = this.GetCellBounds
(this.CurrentCell).Width;
if ((X >= T && X <= T +
H ) && (Y >= L && Y <= L + W))
return;
}
base.WndProc(ref m);
}

protected override void
OnCurrentCellChanged(EventArgs e)
{
this.SeleccionarFila
(this.CurrentCell);
base.OnCurrentCellChanged(e);
}
#endregion Override

#region Métodos
/// <summary>
/// Selecciona la fila de donde se
encuentra la celda especificada.
/// </summary>
/// <param name="celda">Celda del fila a
selecionar.</param>
public void SeleccionarFila(DataGridCell
celda)
{
Int32 lParam = ConvertirLParam
(this.GetCellBounds(celda).Top, 5);
Win32API.SendMessage(this.Handle,
0x0201, 0, lParam);
Win32API.SendMessage(this.Handle,
0x0202, 0, lParam);
}

/// <summary>
/// Convierte un punto superior izquierdo
a valor LParam para enviar mensaje.
/// </summary>
/// <param name="Top">Punto superior para
convertir.</param>
/// <param name="Left">Punto izquierdo
para convertir.</param>
/// <returns>Retorna valor
LParam.</returns>
private static int ConvertirLParam(int
Top, int Left)
{
return (Top << 16) | (Left &
0xffff);
}
#endregion Métodos
}
#endregion DataGrid
}
y luego en el formulario reemplazas
System.Windows.Forms.DataGrid por ClasesPropias.MiDataGrid
(2 veces).
Saludos.
Yachakuq
Hola señores.

Espero que alguien pueda ayudarme.

Tengo un DataGrid que cargo con una serie de filas de
BBDD.

Bien, el caso que cuando cargo un formulario que contiene
un datagrid, aparecen digamos una fila para las columnas
(los nombres de las columnas) y después todas las filas
(los datos)

A la izquierda de las filas aparece una columna en gris,
con una especie de flechita.

Si pulso el ratón sobre una fila, la fila se destaca con
un color azul, indicando la fila activa supongo.

Si luego tecleo la tecla flecha ABAJO, la flechita
aparecería en la siguiente fila, pero el color azul no
destaca la fila, desaparece y cuando pulso sobre una fila
vuelve a destacarse la fila con ese color azul.

Alguien sabe cómo puedo hacer que en el momento que la
flechita de la izquierda vaya pasando de una fila a otra,
la fila en la que esté la flechita, aparezca destacada
con ese color azul ?.

Un saludo foreros.
.

Preguntas similares