TextBoxへのデータバインディング - BindingSourceへのバインディング (.NET Framework)

TextBoxからBindingSourceへバインディングしてデータベースの情報を表示できるようにします。

事前準備

  • こちらの記事を参照して、BindingSourceをフォームに追加しプロパティの設定をしてください。
  • フォームにTextBoxを3つ、Buttonを2つ配置します。


TextBoxへのデータバインディング - BindingSourceへのバインディング (.NET Framework):画像1

バインドの手順

テキストボックスを選択しプロパティウィンドウを表示します。"(DataBindings)"プロパティを開き内部の"Text"のコンボボックスを開きます。下図のドロップダウンリストが表示されますので、bindingSourceのインスタンス名のノードを開き、フィールドを選択します。今回の例ではテーブルに3つのフィールドがあるため、それぞれのテキストボックスにそれぞれのフィールドをバインドします。
TextBoxへのデータバインディング - BindingSourceへのバインディング (.NET Framework):画像2

"(DataBindings)"プロパティの右側にある"..."ボタンを押して、[フォーマットと詳細バインド]ダイアログを用いても設定できます。
TextBoxへのデータバインディング - BindingSourceへのバインディング (.NET Framework):画像3

3つのテキストボックスをBindingSourceのフィールドにバインドできました。
TextBoxへのデータバインディング - BindingSourceへのバインディング (.NET Framework):画像4

コードの記述

下記のコードを記述します。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SimpleDataSet
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void FormMain_Load(object sender, EventArgs e)
    {
      simpleProductTableAdapter1.Fill(myDataSet1.SimpleProduct);
    }

    private void button1_Click(object sender, EventArgs e)
    {
      bindingSource1.MovePrevious();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      bindingSource1.MoveNext();
    }
  }
}

解説

private void FormMain_Load(object sender, EventArgs e)
{
  simpleProductTableAdapter1.Fill(myDataSet1.SimpleProduct);
}

にて、TableAdapterのFill()メソッドを呼び出してテーブルのレコードをすべて取得します。

private void button1_Click(object sender, EventArgs e)
{
  bindingSource1.MovePrevious();
}

Button1がClickされた場合は、BindingSourceコンポーネントのMovePrevious()メソッドを呼び出しひとつ前のレコードに切り替えます。

private void button2_Click(object sender, EventArgs e)
{
  bindingSource1.MoveNext();
}

Button2がClickされた場合は、BindingSourceコンポーネントのMoveNext()メソッドを呼び出し次のレコードに切り替えます。

実行結果

プロジェクトを実行します。実行すると下図のウィンドウが表示され、テキストボックスに最初のレコードの値が表示されます。
TextBoxへのデータバインディング - BindingSourceへのバインディング (.NET Framework):画像5

button2をクリックするとテキストボックスの値が次のレコードに切り替わります。
TextBoxへのデータバインディング - BindingSourceへのバインディング (.NET Framework):画像6

button1をクリックすると手前のレコードの値がテキストボックスに表示されます。

補足

こちらの記事のように、DataSetへバインドした場合、データセットには現在のレコードなどの概念がないため、次のレコードや前のレコードを表示することはできません。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2012-09-20
Copyright © 1995–2025 iPentec all rights reserverd.