visual usar tareas minimizar icono formulario ejemplos desplazamiento crear como barras barra aplicacion c# winforms datagrid

usar - minimizar aplicacion en barra de tareas c#



¿Cómo puedo establecer la posición de mi barra de desplazamiento de la cuadrícula de datos en mi aplicación de winforms? (5)

Sí, definitivamente FirstDisplayedScrollingRowIndex . Tendrá que capturar este valor después de alguna interacción del usuario, y luego de que la cuadrícula vuelva a cargar, querrá volver a establecer el valor anterior.

Por ejemplo, si la recarga se desencadena con un clic en un botón, en el botón clic en el controlador, es posible que desee tener como primera línea un comando que coloca este valor en una variable:

// Get current user scroll position int scrollPosition = myGridView.FirstDisplayedScrollingRowIndex; // Do some work ... // Rebind the grid and reset scrolling myGridView.DataBind; myGridView.FirstDisplayedScrollingRowIndex = scrollPosition;

En mi aplicación C # winforms, tengo una cuadrícula de datos. Cuando se recargue la cuadrícula de datos, quiero establecer la barra de desplazamiento nuevamente donde el usuario la configuró. ¿Cómo puedo hacer esto?

EDITAR: estoy usando el control DataGrid viejo winforms, no el DataGridView más nuevo


Guarde sus valores de desplazamiento vertical y horizontal en alguna variable y reinícielos.

int v= dataGridView1.VerticalScrollingOffset ; int h= dataGridView1.HorizontalScrollingOffset ; //...reload dataGridView1.VerticalScrollingOffset = v; dataGridView1.HorizontalScrollingOffset =h;


En realidad, no interactúa directamente con la barra de desplazamiento, sino que establece FirstDisplayedScrollingRowIndex . Entonces, antes de volver a cargar, capture ese índice, una vez que se haya recargado, reinícielo a ese índice.

EDITAR: Buen punto en el comentario. Si está utilizando un DataGridView entonces esto funcionará. Si está utilizando el antiguo DataGrid , la forma más fácil de hacerlo es heredarlo. Ver aquí: Enlace

DataGrid tiene un método GridVScrolled protegido que se puede usar para desplazar la cuadrícula a una fila específica. Para usarlo, obtenga una nueva grilla de DataGrid y agregue un método ScrollToRow.

C # code

public void ScrollToRow(int theRow) { // // Expose the protected GridVScrolled method allowing you // to programmatically scroll the grid to a particular row. // if (DataSource != null) { GridVScrolled(this, new ScrollEventArgs(ScrollEventType.LargeIncrement, theRow)); } }


Usé la respuesta de @BFree, pero también necesitaba capturar la primera fila visible en DataGrid :

int indexOfTopMostRow = HitTest(dataGrid.RowHeaderWidth + 10, dataGrid.PreferredRowHeight + 10).Row;


Acabo de publicar la respuesta en el enlace dado por BFree

DataGrid tiene un método GridVScrolled protegido que se puede usar para desplazar la cuadrícula a una fila específica. Para usarlo, obtenga una nueva grilla de DataGrid y agregue un método ScrollToRow .

C # code

public void ScrollToRow(int theRow) { // // Expose the protected GridVScrolled method allowing you // to programmatically scroll the grid to a particular row. // if (DataSource != null) { GridVScrolled(this, new ScrollEventArgs(ScrollEventType.LargeIncrement, theRow)); } }

Código VB.NET

Public Sub ScrollToRow(ByVal theRow As Integer) '' '' Expose the protected GridVScrolled method allowing you '' to programmatically scroll the grid to a particular row. '' On Error Resume Next If Not DataSource Is Nothing Then GridVScrolled(Me, New ScrollEventArgs(ScrollEventType.LargeIncrement, theRow)) End If End Sub