1

DataGridViewで指定された行をフォーマットしようとしていますが、DataGridViewのすべての行がフォーマットされ続けます。これは私がしていることです:

private void dgwParti_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        foreach (DeParti tmp in bnsParti)
        {
            if (tmp.Arti.Type == ArtiType.Fast)
            {
                if (e.ColumnIndex == 0 || e.ColumnIndex == 3 ||
                    e.ColumnIndex == 8 || e.ColumnIndex == 9)
                {
                    e.Value = "";
                }
            }
        }
    }

このタイプのコードを使用すると、すべての行でセル値が ""に設定され続けますが、ArtiタイプがFastの場合、値が""である必要があります。何か案は。
前もって感謝します。

4

1 に答える 1

2

指定された行をフォーマットする必要がある場合、なぜ列をチェックするのですか?

DataBoundItem(フォーマットされている行に関連付けられているオブジェクト)にアクセスし、ロジックに従って値を変更します。バインディングソースに直接アクセスしないでください。あなたのコードは

private void dgwParti_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if ((Rows[e.RowIndex].DataBoundItem as DeParti).Arti.Type == ArtiType.Fast)
    {
         e.Value = "";
    }
}

これにより、行のすべてのセルが「クリーン」になります。たとえば、一部の列にのみValue =""を設定する場合は、チェックを追加できます。

private void dgwParti_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if ((Rows[e.RowIndex].DataBoundItem as DeParti).Arti.Type == ArtiType.Fast
        && e.ColumnIndex == 8)
    {
         e.Value = "";
    }
}
于 2012-10-26T12:47:26.790 に答える