none
VisualBasic.Net の CheckedListBox のOnDataSourceChangedでNullReferenceException RRS feed

  • 質問

  • いつも参考にさせていただいています。たばひでと申します。

    現在、.Net FrameWork 3.5 VisualStudio 2010 で CheckedListBoxを特化したクラスを作成していますが、OnDataSourceChangedをOverrideして以下のコーディングすると、DataSourceプロパティにセットした時点でNullReferenceExceptionがスローされます。

        Protected Overrides Sub OnDataSourceChanged(e As System.EventArgs)
            MyBase.OnDataSourceChanged(e)   <===ここでスローされています。

        '本当はここに固有の処理を記述したかったのですが、ここに至りませんでした。

        End Sub

    System.NullReferenceException はユーザー コードによってハンドルされませんでした。

      Message=オブジェクト参照がオブジェクト インスタンスに設定されていません。
      Source=System.Windows.Forms
      StackTrace:
           場所 System.Windows.Forms.CheckedListBox.RefreshItems()
           場所 System.Windows.Forms.ListBox.OnDataSourceChanged(EventArgs e)
           場所 。。。。。

    固有の処理を記述しなくても、NullReferenceExceptionスローされます。

    なお、Overrideをやめると、正常に処理されます。(実現したいことは出来ないけれど。。。。)

    どなたか、回避策をご教授願います。

    2013年4月16日 11:30

回答

  • CheckedListBoxから派生させてOnDataSourceChangedだけをオーバーライドしたものを使い、プロパティには触れずにDataSourceのみをnullにしたりList<T>を入れたりDataTableを設定したりした限りでは、再現しませんね。

    例えばCheckedListBoxの代わりにListBoxから派生したクラスでやってみても同じ例外が出たりするのでしょうか?

    ところで、CheckedListBoxは、MSDNの該当クラスにメモがありますが、データバインディングをサポートしていません(一見正しく動きますが)。DataSourceプロパティも使用するなと明記されています。

    • 回答としてマーク 星 睦美 2013年4月17日 5:36
    2013年4月16日 12:25

すべての返信

  • CheckedListBoxから派生させてOnDataSourceChangedだけをオーバーライドしたものを使い、プロパティには触れずにDataSourceのみをnullにしたりList<T>を入れたりDataTableを設定したりした限りでは、再現しませんね。

    例えばCheckedListBoxの代わりにListBoxから派生したクラスでやってみても同じ例外が出たりするのでしょうか?

    ところで、CheckedListBoxは、MSDNの該当クラスにメモがありますが、データバインディングをサポートしていません(一見正しく動きますが)。DataSourceプロパティも使用するなと明記されています。

    • 回答としてマーク 星 睦美 2013年4月17日 5:36
    2013年4月16日 12:25
  • Hongliang さん。早速アップしていただきありがとうございます。

    >>例えばCheckedListBoxの代わりにListBoxから派生したクラスでやってみても同じ例外が出たりするのでしょうか?

    同じように特化したクラスを作成しています。同じようにOnDataSourceChangedをOverrideしても問題ないように思われますが、一応ソースを確認してみたいと思います。

    >>ところで、CheckedListBoxは、MSDNの該当クラスにメモがありますが、データバインディングをサポートしていません(一見正しく動きますが)。DataSourceプロパティも使用するなと明記されています。

    たしかに、プロパティウインドウにValueMemberやDisplayMemberプロパティが表示されない等、ListBoxやComboBoxと違う点については何故なんだろうとは思っていましたが、これが影響しているんですね。

    自分ももう少し粘ってみようと思いますが、また情報等ございましたら、よろしくお願いします。

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


    2013年4月17日 0:13