DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■35649 / inTopicNo.1)  DataGridViewのイベント中にデータを更新するとエラーが発生
  
□投稿者/ Pulsar 一般人(1回)-(2025/02/07(Fri) 14:46:00)
  • アイコン環境/言語:[c# .Net9.0] 
    分類:[.NET] 

    2025/02/07(Fri) 14:56:10 編集(投稿者)
    2025/02/07(Fri) 14:47:42 編集(投稿者)

    .Net9.0 c# Microsoft.Data.SqlClientを使用していますが
    DataGridViewにBindingSourceを使用してDataTableをバインドしています。
    CellContentClickイベント中にDataTableのデータを更新して
    BindingSourceのResetBindingsメソッドを実行すると
    CellContentClickイベントが終了したタイミングで
    System.NullReferenceException: 'Object reference not set to an instance of an object.'
    が発生します。

    .Net6.0 c# System.Data.SqlClientを使用していた時はエラーは発生しませんでした。
    (同じプログラムです。)

    回避策などがありましたらご教授ください。
マルチポストを報告
違反を報告
引用返信 削除キー/
■35650 / inTopicNo.2)  Re[1]: DataGridViewのイベント中にデータを更新するとエラーが発生
□投稿者/ 魔界の仮面弁士 大御所(1582回)-(2025/02/12(Wed) 10:15:57)
  • アイコンNo35649に返信(Pulsarさんの記事)
    > .Net9.0 c# Microsoft.Data.SqlClientを使用していますが
    .NET 9.0 ですか…。.NET 8.0 だと結果は変わりますか?

    STS である奇数バージョン(リリース後、18ヶ月間サポートされる)は、
    LTS である偶数バージョン(リリース後、36ヶ月間サポートされる)よりも
    ライフサイクルが短いため、8.0 にしてみるのも手かもしれません。
    https://dotnet.microsoft.com/ja-jp/platform/support/policy/dotnet-core


    > DataGridViewにBindingSourceを使用してDataTableをバインドしています。
    両バージョンの DataTable で WriteXml した場合、内容に差異がありますか?
    差異が無いのなら、SqlClient そのものが原因では無いのだと思います。

    その XML を ReadXml で読み取った DataTable をバインドした場合と、
    元の SqlClient から得た DataTable をバインドした場合とで
    結果に差があるかを確認してみてはいかがでしょう。


    > CellContentClickイベント中にDataTableのデータを更新して
    > BindingSourceのResetBindingsメソッドを実行すると
    > CellContentClickイベントが終了したタイミングで
    > System.NullReferenceException: 'Object reference not set to an instance of an object.'
    > が発生します。
    例外発生時に StackTrace の内容がどうなっているか、提示することはできますか?
    もしくは、「第三者が実験可能な最小限の検証用コード」を添付することは可能でしょうか。
    .NET はソースコードが公開されているため、そこから何かヒントが得られるかもしれません。

    https://source.dot.net/#System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.cs
    https://github.com/dotnet


    また、CellContentClick の最中に BindingSource.ResetBindings() する代わりに、
    BeginInvoke などを用いて、「CellContentClick の完了後に BindingSource.ResetBindings()」されるように
    手順を変更してみるのはどうでしょうか。


    > .Net6.0 c# System.Data.SqlClientを使用していた時はエラーは発生しませんでした。

    一般的には「c#」ではなく「C#」と表記されることが多いです。
    以下、C# 関連規格書より引用:

    -----
    JIS X 3015:2008 "プログラム言語C#" [October 2008]
     「6 頭字語及び略語」
    より引用:
    > C#は,LATIN CAPITAL LETTER C (U+0043)の次に
    > NUMBER SIGN # (U+000D)を書く。
    -----
    ISO/IEC 23270:2018 "Information technology -- Programming languages -- C# (Third edition)" [December 2018]
     「4. Acronyms and abbreviations」
    および
    ECMA-334:2023 "C# language specification (7th edition)" [December 2023]
     「Introduction」
    より引用:
    > The name C# is written as the LATIN CAPITAL LETTER C (U+0043)
    > followed by the NUMBER SIGN # (U+000D).
違反を報告
引用返信 削除キー/
■35651 / inTopicNo.3)  Re[2]: DataGridViewのイベント中にデータを更新するとエラーが発生
□投稿者/ Pulsar 一般人(2回)-(2025/02/12(Wed) 15:43:35)
  • アイコンレスありがとうございます。

    本日Version 17.13.0のアップデートがあり、
    アップデート後にリビルドしたらエラーが出なくなりました。

    レスポンスの内容は勉強になりました。
    今後の対応に応用できるかと思います。

    ありがとうございました。

解決み!
違反を報告
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/


- Child Tree -