[C#]ArgumentExceptionで、”DataSource のプロパティまたは列 xxxx にバインドできません。”エラーが出る場合

プログラムの実行時、ArgumentExceptionの例外が発生し、”DataSource のプロパティまたは列 xxxx にバインドできません。”というメッセージが出力される場合があります。


System.ArgumentException はハンドルされませんでした。
  Message=DataSource のプロパティまたは列 xxxx にバインドできません。
パラメーター名: dataMember
  Source=System.Windows.Forms
  ParamName=dataMember
  StackTrace:
       場所 System.Windows.Forms.BindToObject.CheckBinding()
       場所 System.Windows.Forms.BindToObject.SetBindingManagerBase(BindingManagerBase lManager)
       場所 System.Windows.Forms.Binding.SetListManager(BindingManagerBase bindingManagerBase)
       ...





これは、画面のコントロール(TextBoxやLabelなど)のプロパティで指定されているデータソースが存在しないためです。データバインディングは、DBのデータソースやアプリケーション設定情報などに対して行う事が可能ですが、今回はアプリケーション設定情報とバインドしていた場合に何をチェックすべきか説明します。

まず、コントロールがバインドしている紐付け先は、コントロールのプロパティを開き、DataBindingsのValueを確認します。
ここに表示されているValueの値が”(Settings) – “から始まっていたら、アプリケーション設定キーの情報と紐付けが行われています。



次に、プロジェクトで指定されている、アプリケーション設定キーの一覧をチェックします。
VisualStudioのメニューより、プロジェクト→xxxのプロジェクトを選択します。



設定タブを表示させると、登録済みのアプリケーション設定キーが表示されます。
もしこの一覧に、コントロールのプロパティで確認したValueが無い場合は、前述のエラーメッセージが表示されます。


プロパティを一旦クリアして(必要であれば)正しいアプリケーション設定キーを指定しなおせば、エラーは出なくなります。



関連記事

コメントを残す

メールアドレスが公開されることはありません。