如何突出显示 DataGridView 行或使其暂时发光?

Posted

技术标签:

【中文标题】如何突出显示 DataGridView 行或使其暂时发光?【英文标题】:How to highlight a DataGridView row or make it glow temporarily? 【发布时间】:2011-04-13 07:49:26 【问题描述】:

如何使用 C# DataGridView:

    突出显示一行 暂时使一行发光(变黄几秒钟)

【问题讨论】:

暂时在sence中,当你选择行时或默认情况下。 您可以通过 selectedrowstyle 为网格执行 1,但您希望通过 临时发光行 @Craig,你忘了说现在。在我之前的评论之后,我看到你接受了 9 个答案。 【参考方案1】:

为了模拟用户选择一行,使用

myDataGrid.Rows[n].IsSelected = true;

正如加布里埃尔所建议的那样。

为了临时用颜色突出显示 DataGridView 控件中的一行,请将DefaultCellStyle.BackColor 属性设置为您对感兴趣的行选择的颜色。然后在您选择的时间段内启用System.Windows.Forms.Timer 控件.当计时器的Tick 事件触发时,禁用计时器并将行的DefaultCellStyle.BackColor 设置回原来的颜色。

下面的简短示例适用于具有名为 GlowDataGrid 的 DataGridView、名为 GlowTimer 的计时器和名为 GlowButton 的按钮的 WinForm 应用程序。单击 GlowButton 时,DataGridView 的第三行会暂时呈黄色亮起两秒钟。

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;
    

【讨论】:

应该选择而不是IsSelected【参考方案2】:

我的代码给你

    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");
    

【讨论】:

你得到答案了吗?如果是,请分享它,它可能对其他人有所帮助【参考方案3】:

像这样使用

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

要设置颜色,那么您需要在设置后重置颜色 网格已排序。

然后使用计时器延迟后更改高亮颜色。

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

【讨论】:

(i) 应该是 [i] C# 问题【参考方案4】:

您可以通过 someDataGridView.Rows[n].IsSelected = true; 突出显示“n”行;

【讨论】:

【参考方案5】:

您可以使用GridView AutoFormat 属性。

【讨论】:

【参考方案6】:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    
        if (e.RowIndex >= 0)
        
            int index = e.RowIndex;
            DataGridViewRow row = dataGridView1.Rows[index];
            row.Selected = true;
        
    

【讨论】:

【参考方案7】:

如果有人在 dataGridView 上使用 AlternatingRowsDefaultCellStyle.BackColor 和 RowsDefaultCellStyle.BackColor 属性,则在 Row 上设置 BackColor 将覆盖这些样式值。 因此使用 Color.Empty 而不是 Color.White 将 BackColor 重置为其默认值,从而恢复 AlternatingRowsDefaultCellStyle 和 RowsDefaultCellStyle 值。

dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Empty;

【讨论】:

以上是关于如何突出显示 DataGridView 行或使其暂时发光?的主要内容,如果未能解决你的问题,请参考以下文章

C#/.NET 如何突出显示 DataGridView 中的某些行

如何让DataGridview控件自动滚动到指定的行或列

在 datagridview 中禁用单元格突出显示

如果活动单元格(两行或更多行)位于同一列中,则突出显示单元格

如何手动设置 TitlePane 高度或使其适应其内容

text 在Excel中突出显示每个第n行或列