最初の説明:
私が取り組んでいるゲームの単純なオフラインの「キャラクタージェネレーター」を作成しようとしています。私はこれにVBを使用していますが、まだ初心者です。VS 2012 で WinForms アプリケーションを作成し、さまざまなデータを保持するローカル データベース オブジェクトを作成しました。データベース内には、すべてのデータを保持する「Players」テーブルがあります。BindingNavigator もフォームに追加しましたが、ナビゲーションは PlayersBindingSource にバインドされた List コントロールによって制御されるため、追加ボタンと削除ボタン以外はすべて削除しました。また、BindingNavigator に保存ボタンを追加しました。
「Players」テーブルに 2 つのサンプル エントリを手動で入力しました。フォームが読み込まれると、listBox の「Player Name」フィールドに 2 つのエントリが正しく表示されます。1 つを選択すると、各フィールドを表すすべてのコントロールがそれに応じて変化します。値を変更して保存ボタンを押すと、使用しているコードで動作するようです。
今問題:
追加ボタンを押すと、ListBox に新しいエントリが作成されますが、指定されたデフォルト値は表示されません。このエントリを編集して保存すると、正常に更新されるようです。ただし、エントリのいずれかに他の変更を加えて保存しようとすると、例外がスローされます。
削除ボタンを押すと、期待どおりエントリがリストから消えますが、保存しようとすると例外が発生します。
これまでのところ私のフォームにあるコードは次のとおりです(それほど多くはありません):
Public Class frmMain
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.PlayersTableAdapter.Fill(Me.DatPlayerDataSet.Players)
End Sub
Private Sub SaveToolStripButton_Click(sender As Object, e As EventArgs) Handles SaveToolStripButton.Click
Me.Validate()
Me.PlayersBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.DatPlayerDataSet)
End Sub
End Class
また、「Players」テーブルに含まれるデータを見ると、2 つのサンプル エントリは変更されず、追加のエントリも追加されていないため、編集が実際にテーブルにコミットされたことはないと思います。
誰かがこれを手伝ってくれたり、単に私を助けるいくつかのチュートリアルへのリンクを提供してくれたりしたら、私は非常に感謝しています. このサイトと microsofts msdn ライブラリを閲覧し、データ バインディングとナビゲーションに関する情報を検索しましたが、役立つ情報が見つかりませんでした。