先日、半日以上悩んでいた現象が解決しました。
結論
結論から言うと、CellValueChangedイベントでの処理が原因でした。
データグリッドへの値の投入時、CellValueChangedイベント内で、明細の値を使用した比較計算をさせていたんです。
それが、画面Load時なので、値が存在しない状態で計算しようとしてエラー吐いてました・・・
現象
データグリッドへの値をセットする際に「入力文字列の形式が正しくありません」のエラーが発生し、値が中途半端に投入される。
強制的に行列数分だけ回し、try-catchでエラーを無視することで無理やり機能を実現したが、画面の表示に数秒掛かるように・・・
これではイカンと思いつつも、原因が不明でどうしようもなかった。
実際、catchできたエラーからは、別のイベントが絡んでるなんて思いもしなかったし・・・
気づいたきっかけ
速度の遅さを指摘された再に、「CellValueChangedイベントを毎回使用してて効率悪くね?」というもの。
確かに、効率悪いなとは思っていたけど、エラー該当箇所では、TextプロパティにString値を入れてるだけで特別なことはして無いと思ってた。
そしたら、そのたびに、CellValueChangedイベントが動いていたことが判明・・・
そっちにはtry-catch仕掛けてなかったので、全然気づかなかった。
というか、CellValueChangedイベントの処理を入れる前は普通に処理出来ていたことに気づくべきだったのに・・・
まとめ
どうしようもない時は人を頼る方がいいね。
寝たら解決方法を思いつくかも・・・とか考えて、早々に諦めて帰ったりしたけど、全然そんなことは無くて、他人にテストを頼んだら、あっさりと解決方法にたどり着いたという。
個人的には一見エラーが無いように見えるイベント系は今後、注視ポイントにしていきたい。