如果正在编辑单元格,如何更改单元格的背景颜色
本文关键字:单元格 何更改 背景 颜色 编辑 如果 | 更新日期: 2023-09-27 17:56:21
我有两个数据网格视图单元格,grid1 和 grid2。 我是否将文件加载到两个网格,我已经使用了该文件的版本。 每次保存/编辑文件时,它都会将文件版本从 1 从 5 递增 5,这意味着它将是 6、7、8、9 等。
文件版本从 5 开始。增加它的工作没有问题
如果我加载文件并编辑,我想更改单元格的背景颜色,从编辑的单元格中,它必须将背景颜色更改为黄色。
- 加载现有文件
- 编辑文件
- 编辑单元格的背景颜色必须更改为黄色
- 保存文件并清除颜色(这正在工作)
我已经尝试过了,但是,当我创建文件时,它会突出显示颜色。 我只需要它仅在编辑文件时更改背景单元格颜色。
我的代码:
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;
}
}
..
..