columnas c# datagridview scrollbar

c# - columnas - DataGridView: Desplácese hacia abajo automáticamente solo si el desplazamiento está en la parte inferior



columnas datagridview c# (3)

Puedes intentar esto:

int firstDisplayed = liveDataTable.FirstDisplayedScrollingRowIndex; int displayed = liveDataTable.DisplayedRowCount(true); int lastVisible = (firstDisplayed + displayed) - 1; int lastIndex = liveDataTable.RowCount - 1; liveDataTable.Rows.Add(); //Add your row if(lastVisible == lastIndex) { liveDataTable.FirstDisplayedScrollingRowIndex = firstDisplayed + 1; }

Así que, básicamente, compruebe si la última fila es visible y si se desplaza 1 fila hacia abajo después de agregar la nueva fila.

Tengo un programa que usa dataGridView para mostrar datos que se actualizan automáticamente cada segundo agregando filas a dataGridView.

Cuando quiero leer algo al principio, me desplazo hacia arriba, e incluso cuando las actualizaciones de datos, la barra de desplazamiento no baja, está bien. Pero quiero que la barra de desplazamiento descienda solo cuando esté en la parte inferior de dataGridView.

El comportamiento que quiero cuando se agrega una nueva fila al texto:

si la barra de desplazamiento está en la parte inferior, desplácese hacia abajo automáticamente. si la barra de desplazamiento está en otro lugar, no se desplace.

El código que he escrito para esto y desafortunadamente no funciona es:

private void liveDataTable_Scroll(object sender, ScrollEventArgs e) { ScrollPosition = liveDataTable.FirstDisplayedScrollingRowIndex; if (ScrollPosition == liveDataTable.RowCount - 1) { IsScrolledToBottom = true; } else { IsScrolledToBottom = false; } } public void AddRowToDataGridMethod() { dataTable.Rows.Add(); if (dataWin.IsScrolledToBottom == true) dataWin.LiveDataTable.FirstDisplayedScrollingRowIndex = (dataWin.ScrollPosition + 1); else dataWin.LiveDataTable.FirstDisplayedScrollingRowIndex = dataWin.ScrollPosition; }


Solo quería agregar, otro método para mantenerlo desplazándose (pero con la nueva fila en la parte inferior) es ...

Básicamente, lo que hace es decir que tiene 10 filas mostradas y está procesando cada fila. Cuando llega a la fila 11, se desplaza hacia arriba por 1 fila, por lo que ahora se muestra la fila, pero en la parte inferior. Podría, por ejemplo, agregar 1 y ahora se mantendrá su fila + 1 por lo que está al lado de la última fila desde la parte inferior.

if (myRow.Displayed == false) { int intDisplayRows = myRow.Index - dataView_Database.DisplayedRowCount(false); dataView_Database.FirstDisplayedScrollingRowIndex = intDisplayRows; }


private void dgZavod_RowsAdded_1(object sender, DataGridViewRowsAddedEventArgs e) { dgZavod.FirstDisplayedScrollingRowIndex = dgZavod.Rows[dgZavod.Rows.Count - 1].Index; }