1

私は VS2010 と C# を初めて使用し、VB6 アプリを .net に変換しようとしていますが、ComboBox を正しく動作させる際に問題が発生しています。「Data Binging Mode」で ComboBox をバインドしようとしていますが、うまくいきません。テストを実行すると、ComboBox はレコードに関連付けられた整数のみを表示しますが、基になる ComboBox データ ソースに関連付けられた「表示メンバー」は表示しません。ドロップダウン リストは正しく表示され (緑、青、黄)、リストから項目を選択して [保存] をクリックすると、「入力文字列の形式が正しくありませんでした」という形式の例外が発生します。しかし、私のデータは正しいようです。私はすべてを読んで試しましたが、私の人生では、自分が間違っていることを理解できないようです。

うまくいけば、誰かがこれに光を当てることができます…</p>

マスター テーブルのデータ ソースから「ChoiceID」フィールドをコンボ ボックス タイプとして選択するテストを作成しました。グラフィカル インターフェイスを使用して、「データ ソース」を「choiceBindingSource」に設定しました。「表示メンバー」を「選択肢」に設定しました。「Value Member」を「ChoiceID」に設定しました。

注:これをプログラムで実行しても同じ結果が得られました。

マスターテーブル: ID(整数)、ChoiceID(整数)

データ:

  • 1,1

  • 2,1

  • 3,2

選択肢テーブル: ChoiceID(整数)、選択肢(テキスト)

データ:

  • 1、グリーン

  • 2、青

  • 3、イエロー

テストを実行すると、コンボボックスに 1 NOT "Green" が表示されます。

質問:

まず、ComboBox ビンギングで、ComboBox が Master テーブルの「ChoiceID」を Choice テーブルの「ChoiceID」に正しくバインドしないのはなぜですか? 次に、データが正しい形式であると思われる場合に、ドロップダウンから Item を選択すると、形式の例外が発生する理由です。

ありがとう、JC

    public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void masterBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.masterBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this.tabTestDataSet);

    }

    private void Form2_Load(object sender, EventArgs e)
    {
        this.choiceComboBox.DataSource = choiceBindingSource;
        this.choiceComboBox.DisplayMember = "Choice";
        this.choiceComboBox.ValueMember = "ChoiceID";

       // TODO: This line of code loads data into the 'tabTestDataSet.Master' table. You can move, or remove it, as needed.
        this.masterTableAdapter.Fill(this.tabTestDataSet.Master);
        // TODO: This line of code loads data into the 'tabTestDataSet.Choice' table. You can move, or remove it, as needed.
        this.choiceTableAdapter.Fill(this.tabTestDataSet.Choice);

    }
}
4

1 に答える 1