如果正在编辑单元格,如何更改单元格的背景颜色

本文关键字:单元格 何更改 背景 颜色 编辑 如果 | 更新日期: 2023-09-27 17:56:21

我有两个数据网格视图单元格,grid1 和 grid2。 我是否将文件加载到两个网格,我已经使用了该文件的版本。 每次保存/编辑文件时,它都会将文件版本从 1 从 5 递增 5,这意味着它将是 6、7、8、9 等。

文件版本从 5 开始。增加它的工作没有问题

如果我加载文件并编辑,我想更改单元格的背景颜色,从编辑的单元格中,它必须将背景颜色更改为黄色。

  1. 加载现有文件
  2. 编辑文件
  3. 编辑单元格的背景颜色必须更改为黄色
  4. 保存文件并清除颜色(这正在工作)

我已经尝试过了,但是,当我创建文件时,它会突出显示颜色。 我只需要它仅在编辑文件时更改背景单元格颜色。

我的代码:

    int version_Number = 5;
    string _OriginalValue;
    private void Grid1_CellBeginEdit_1(object sender, DataGridViewCellCancelEventArgs e)
    {
        try
        {
            _OriginalValue = Grid1[e.ColumnIndex, e.RowIndex].Value.ToString();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error occured.'nError message: " + ex.Message, "Error Occured", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

    #region Grid2_CellEndEdit_1
    private void Grid2_CellEndEdit_1(object sender, DataGridViewCellEventArgs e)
    {
        try
        {
            DataGridViewCell cell = Grid2[e.ColumnIndex, e.RowIndex];
            if (cell.Value.ToString() != _OriginalValue)
            {
                if (version_Number >= 1000)
                {
                    cell.Style.BackColor = Color.Yellow;
                }
            }   

如果正在编辑单元格,如何更改单元格的背景颜色

您必须处理在单元格格式化事件中为单元格着色的部分,我尝试的示例如下

 private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            DataGridViewCell cell = dataGridView1[e.ColumnIndex, e.RowIndex];
            if (cell.Value  != null)
            {
                if (cell.Value.ToString() != _OriginalValue)
                {
                    cell.Style.BackColor = Color.Yellow;
                }   
            }
    }

您可能希望使用标志来阻止在加载数据期间发生着色:

int version_Number = 5;
string _OriginalValue;
bool loading = false;

你在某处加载数据;现在在那里设置和重置标志:

loding = true;
yourDataLoadingCodeHere;
loading = false;

现在,如果它们以其他方式工作,您可以简单地中止两个事件:

private void Grid1_CellBeginEdit_1(object sender, DataGridViewCellCancelEventArgs e)
{
    if (loading) return;
    try
    {
        _OriginalValue = Grid1[e.ColumnIndex, e.RowIndex].Value.ToString();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error occured.'nError message: " + 
        ex.Message, "Error Occured", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

private void Grid2_CellEndEdit_1(object sender, DataGridViewCellEventArgs e)
{
   if (loading) return;
   try
   {
     DataGridViewCell cell = Grid2[e.ColumnIndex, e.RowIndex];
     if (cell.Value.ToString() != _OriginalValue)
     {
        if (version_Number >= 1000)
        {
           cell.Style.BackColor = Color.Yellow;
        }
    }  
    ..
    ..