web-dev-qa-db-fra.com

Comment mettre en évidence une ligne DataGridView ou la faire briller temporairement?

À l'aide d'un DataGridView C #, comment puis-je:

  1. Surligner une rangée
  2. Faire briller temporairement une ligne (jaunir pendant quelques secondes)
14
Craig Johnston

Pour simuler l'utilisateur en sélectionnant une ligne, utilisez

myDataGrid.Rows[n].IsSelected = true;

comme l'a suggéré Gabriel.

Afin de mettre temporairement en surbrillance une ligne dans un contrôle DataGridView, définissez la propriété DefaultCellStyle.BackColor sur une couleur de votre choix pour la ligne qui vous intéresse. Activez ensuite un contrôle System.Windows.Forms.Timer pour la période de votre choix. Lorsque l'événement Tick du minuteur est déclenché, désactivez-le et réglez le DefaultCellStyle.BackColor de la ligne sur sa couleur d'origine.

Le court exemple ci-dessous concerne une application WinForm ayant un DataGridView nommé GlowDataGrid, un minuteur nommé GlowTimer et un bouton nommé GlowButton. Lorsque vous cliquez sur GlowButton, la troisième ligne de DataGridView est temporairement jaune pendant deux secondes.

private void Form1_Load(object sender, EventArgs e)
    {
        // initialize datagrid with some values
        GlowDataGrid.Rows.Add(5);
        string[] names = new string[] { "Mary","James","Michael","Linda","Susan"};
        for(int i = 0; i < 5; i++)
        {
            GlowDataGrid[0, i].Value = names[i];
            GlowDataGrid[1, i].Value = i;
        }
    }

    private void GlowButton_Click(object sender, EventArgs e)
    {
        // set third row's back color to yellow
        GlowDataGrid.Rows[2].DefaultCellStyle.BackColor = Color.Yellow;
        // set glow interval to 2000 milliseconds
        GlowTimer.Interval = 2000;
        GlowTimer.Enabled = true;
    }

    private void GlowTimer_Tick(object sender, EventArgs e)
    {
        // disable timer and set the color back to white
        GlowTimer.Enabled = false;
        GlowDataGrid.Rows[2].DefaultCellStyle.BackColor = Color.White;
    }
17
Jason Moore

Mon code à vous

    private void Form1_Load(object sender, EventArgs e)
    {
        Timer t = new Timer();
        t.Interval = 500;
        t.Enabled = false;

        dataGridView1.CellMouseEnter += (a, b) =>
        {
            if (b.RowIndex != -1)
            {
                dataGridView1.CurrentCell = dataGridView1.Rows[b.RowIndex].Cells[0];
                dataGridView1.Rows[b.RowIndex].DefaultCellStyle.SelectionBackColor = Color.Yellow;
                dataGridView1.Rows[b.RowIndex].DefaultCellStyle.SelectionForeColor = Color.Black;
                t.Tick += (c, d) =>
                {
                    dataGridView1.Rows[b.RowIndex].DefaultCellStyle.SelectionBackColor = Color.Blue;
                    dataGridView1.Rows[b.RowIndex].DefaultCellStyle.SelectionForeColor = Color.White;
                    t.Enabled = false;
                };
                t.Enabled = true;
            }
        };
        dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        dataGridView1.Columns.Add("Col1", "Col1");
        dataGridView1.Columns.Add("Col2", "Col2");
        dataGridView1.Rows.Add("Row1", "Col1");
        dataGridView1.Rows.Add("Row1", "Col2");
        dataGridView1.Rows.Add("Row2", "Col1");
        dataGridView1.Rows.Add("Row2", "Col2");
        dataGridView1.Rows.Add("Row3", "Col1");
        dataGridView1.Rows.Add("Row3", "Col2");
        dataGridView1.Rows.Add("Row4", "Col1");
        dataGridView1.Rows.Add("Row4", "Col2");
    }
4
Subhash Lama

Vous pouvez mettre en surbrillance 'une' ligne par certains DataGridView.Rows [n] .IsSelected = true;

0
Gabriel

Utiliser comme 

gridLibrary.Rows[i].DefaultCellStyle.BackColor = Color.Yellow

pour définir la couleur, vous devrez réinitialiser les couleurs après le tri de la grille .

Ensuite, utilisez la minuterie pour changer la couleur de surbrillance après un délai.

gridLibrary.Rows[i].DefaultCellStyle.BackColor = Color.white
0
Anand Thangappan

Vous pouvez utiliser la propriété GridViewAutoFormat.

0
r12