次の 2 つのコード サンプルを使用して、両方とも赤い x を削除しようとしましたが、表示時に無限ループが発生します。セルが何らかの理由で RowPrePaint の AddNewIndex .bmp に設定されると、RowPrePaint が再度呼び出されます。e は再び 0 になり、ループし続けます。RowPrePaint を再度実行せずに AddNewIndex .bmp に値を設定する方法を知っている人はいますか? (または、赤い x を削除する別の方法はありますか?) また、次回わかるように、RowPrePaint が複数回呼び出される原因は何ですか?
private void tableDocTypes_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (e.RowIndex >= tableDocTypes.NewRowIndex)
tableDocTypes.Rows[e.RowIndex].Cells[columnDocTypeImage.Index].Value = Properties.Resources.AddNewIndex;
}
private void tableDocTypes_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (tableDocTypes.Rows[e.RowIndex].IsNewRow)
tableDocTypes.Rows[e.RowIndex].Cells[columnDocTypeImage.Index].Value = Properties.Resources.AddNewIndex;
}
また、コンストラクターに次を追加します。
InitializeComponent();
tableDocTypes.Columns[columnDocTypeImage.Index].DefaultCellStyle.NullValue = Properties.Resources.AddNewIndex;