3

我正在使用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)
          {

          }
      }
4

2 回答 2

2

经过一些工作,这段代码对我来说非常好。我发布它可能是任何其他可以使用代码

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;

                          }

                      }
}

切丝……

于 2013-02-27T12:29:54.343 回答
1

您正在尝试使用不正确的.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)
    {

    }
}
于 2013-02-27T11:13:33.633 回答