web-dev-qa-db-fra.com

Faites défiler vers le bas de C # DataGridView

J'essaie de faire défiler vers le bas d'un DataGridView dans un WinForm C #.

Ce code fonctionne avec un TextBox:

textbox_txt.SelectionStart = textbox_txt.Text.Length;
textbox_txt.ScrollToCaret();

... mais je ne sais pas comment le faire avec un DataGridView. Une aide, s'il vous plaît?

33
Motumbo

Pour faire défiler vers le bas de DataGridView essayez ceci.

dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.RowCount-1;
74
Mark Hall

En tant que programmeur commercial, j'utilise un C # DLL pour gérer tous mes projets DataGridView, ce qui me donne la liberté de langage pour tout projet que j'entreprends. Tous mes programmes interceptent toutes les touches pour que je puisse utiliser pour mes propres besoins. Pour le défilement DataGridView, j'utilise les touches PageUp/PageDown pour une seule page, Ctrl/Page pour une seule ligne et Alt/Page pour le haut (haut) et le bas (bas) .Code C # et séquence d'appel de base comme suit:

//---------- C# Dll Partial Source -----------

public int RowShow
   { get { return vu.DisplayedRowCount(false); } }

public int RowCount 
   { get { return vu.RowCount; } }

public void PageMove(int rows)
{
    int rowlimit = vu.RowCount - 1;
    int calc = vu.FirstDisplayedScrollingRowIndex + rows;

    if (calc > rowlimit) calc = rowlimit;  // Go to bottom
    if (calc < 0)        calc = 0;         // Go to top

    vu.FirstDisplayedScrollingRowIndex = calc;
}

// ---------- End Data Grid View ----------



//---------- Calling Program C# ----------

public void Page_Key(int val, int lastKey)
{
    int inc = 1;                // vu is DataGridView

    If (val == 33) inc = -1;

    int rowsDisp = vu.RowShow;  // # of rows displayed
    int rowsMax  = vu.RowCount; // # of rows in view
    int rows     = 0;

    switch (lastKey)
    {        
      case 17:                  // Ctrl prior to Page
        rows = inc;
        break; 
      case 19:                  // Alt prior to Page
        rows = rowsMax * inc;
        break;
      default:
        rows = rowsDisp * inc
        break;
    }  // end switch

  vu.PageMove(rows)
} // end Page_Key



'----- Calling Program B4PPC, VB -----

Sub Page_Key(val,lastKey)     ' 33=PageUp, 34=Down
    inc = 1                   ' vu is DataGridView

    If val = 33 then inc = -1

    rowsDisp = vu.RowShow     ' # of rows displayed
    rowsMax  = vu.RowCount    ' # of rows in view
    rows     = 0

    Select lastKey
      Case 17                 ' Ctrl prior to Page
        rows = inc 
      Case 19                 ' Alt prior to Page
        rows = rowsMax * inc
      Case Else
        rows = rowsDisp * inc
    End Select

    lastKey = ""

    vu.PageMove(rows)
End Sub
3
Ed Sharp