DataGridViewのエラー? への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 YUU  (社会人) 投稿日時 2015/6/30 22:15:54
返信遅れてすみません。返答ありがとうございました。

この一週間再現しませんでした。

しかし、ご助言通りバインド時に不要なイベントが生じコントロールがおかしくなるのが原因ではないかと思っております。

如何せん再現性が低いのでもう少し様子見もかねてイベントの制御を視野に考察してみます。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2015/6/25 22:50:53
赤バツは、レンダリングエラー時に表示されることがあります。
(レンダリングされていないだけならば、単に白くなるか、残像が残るだけですが)

一例としては、DoEvents によるイベント再入などにより、セルの描画中に
バインドデータが変更された場合などでしょうか。

単純な再現実験としてはこんなのとか。

Public Class Form1
    Private tbl1, tbl2 As DataTable
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        tbl1 = New DataTable()
        tbl1.Columns.Add("F1")
        tbl1.Columns.Add("F2")
        For n = 1 To 1000
            tbl1.Rows.Add(CStr(n), StrDup(n, "@"))
        Next

        tbl2 = New DataTable()
        tbl2.Columns.Add("F1")
        tbl2.Columns.Add("F2")
        For n = 1 To 1000
            tbl2.Rows.Add(CStr(n), StrDup(n, "="))
        Next

        Me.DataGridView1.DataSource = tbl1
    End Sub

    Private Sub DataGridView1_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
        If e.RowIndex < 500 Then
            Me.DataGridView1.DataSource = tbl1
        Else
            Me.DataGridView1.DataSource = tbl2
        End If
    End Sub
End Class
投稿者 YUU  (社会人) 投稿日時 2015/6/25 22:07:36
現在リリース中のアプリにてエラーが発生し、調べても同様の現象を見つけることができません。

DataGridVeiwコントロールに赤い×印が大きく表示されているものです。

コード内の処理で行っているものではなく原因がつかめません。(スクショでのみ確認。)

再度アプリケーション起動後問題なしとのことでしたが続くようであれば対策を考えなくてはならないのですが現状不明です。

今回2度目とのこともあって質問させていただきます。

頻度は月1、毎日利用されているアプリですが処理時間は短いかと。グリッドの描画時エラーなのか?

某知恵袋に類似の現象と見受けられるものがありましたがそれ以外見つかりませんでした。