我正在使用一个datagridview,我想显示做条件格式意味着当我得到一个单元格M
,然后我想显示Married
。我尝试这个,但不成功。
private void masterDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
for (int i = 0; i <= masterDataGridView.Rows.Count - 1; i++)
{
String Value = masterDataGridView.Rows[i].Cells[17].Value.ToString();
if (Value == "M")
{
e.Value = "Male";
}
}
}
catch (Exception ex)
{
}
}
经过一些工作后,这段代码对我来说工作得很好。我张贴它可能是任何其他可以使用的代码
private void masterDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (masterDataGridView.Columns[e.ColumnIndex].Name.Equals("Gender"))
{
string _val = e.Value as string;
if (_val == null)
return;
switch (_val)
{
case "M" :
e.Value = "Male";
break;
case "F":
e.Value = "Female";
break;
}
}
}
Chearss…
您正在尝试使用.CellFormatting
事件与for loop statement
,这是不正确的方式。
每次绘制每个单元格时都会发生CellFormatting事件,因此在处理此事件时,应避免冗长的处理过程。这事件也会在单元格FormattedValue被检索或其GetFormattedValue方法
因此,每次绘制单元格时,for loop
都在运行。
试试这个:
private void masterDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (e.ColumnIndex >= 17 && e.ColumnIndex <= 24)
{
if (e.Value == "M")
e.Value = "Married";
else
e.Value = "Not Married";
}
}
catch (Exception ex)
{
}
}