我想在编辑时更改DataGridView
中单元格的背景颜色。我尝试的所有解决方案都是在我离开牢房时应用的颜色。因为我希望用户输入内容并在Cell_Validating
事件中,如果值没有通过规则,那么我为单元格着色,禁止用户离开单元格。以下是我尝试过的代码:
DataGridViewCellStyle CellStyle = new DataGridViewCellStyle();
CellStyle.BackColor = Color.Red;
dgvAddAssets.CurrentCell.Style = CellStyle;
答案 0 :(得分:0)
一个选项是创建自己的CustomDataGridView类,该类继承自DataGridView
类并覆盖适当的方法,如KeyDown,ProcessDialogKey等。
另一种选择是使用以下代码,这有点棘手。
它的作用是强制用户插入有效数据。如果插入了无效值,则当前单元格将显示为红色,并返回编辑模式状态。
在此示例中,假设无效值为"InavlidValue"
。
首先,添加这些字段(我们需要在不同事件之间共享它们):
private bool colorCell = false;
private DataGridViewCell cell;
添加并附加这些事件:
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
// Here we check for the invalid value, and store the cell position for later use
if (e.FormattedValue.ToString() == "InvalidValue")
{
colorCell = true;
cell = dataGridView1[e.ColumnIndex, e.RowIndex];
}
}
private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
{
// When value is valid, change color back to normal
dataGridView1.CurrentCell.Style.BackColor = Color.White;
}
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
// User inserted invalid value, color the cell and return to edit mode
if (colorCell)
{
dataGridView1.CurrentCell = cell;
dataGridView1.CurrentCell.Style.BackColor = Color.Red;
dataGridView1.BeginEdit(true);
colorCell = false;
}
}
答案 1 :(得分:0)
您可以通过以下方式更改编辑文本框的背景颜色
import groovy.json.JsonSlurper
def response = ["curl", "-X", "GET", "https://stg.jfrog.io/XXX/api/storage/docker-local/genie/galerts?uri", "-H", "Postman-Token: 26403513-778c-43c8-b44b-70cb2bbc4352", "-H", "X-JFrog-Art-Api:Pqs", "-H", "cache-control: no-cache"].execute().text
JsonSlurper slurper = new JsonSlurper()
Map parsedJson = slurper.parseText(response)
String idValue = parsedJson.children.uri
newString = idValue.replaceAll("[<>\\[\\]//]", "");
//def output = [newString]
def l = newString.split(',').collect{it as int}
这两行将使正在编辑的框变成红色,但是一旦完成单元格的编辑将是它的前一个颜色,因为这是编辑控件。控件是与DataGridViewCell完全独立的控件。 我将其放在CurrentCellDirtyStateChanged中,当您离开编辑时,该单元格将恢复为先前的颜色,并且如果您转到另一个单元格进行编辑,它将不会是红色的,因为这些控件在输入edit时似乎会重置(但我不是100%肯定)