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

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

事前準備

  1. こちらの記事を参照し、データセット(型指定データセット)を作成します。
  2. こちらの記事を参照し、データセットのインスタンスをフォームに追加します。
  3. こちらの記事を参照し、テーブルアダプターをフォームに追加します。

データバインディングの手順

上記の事前準備が終わりましたらフォームデザイナを表示します。[ツールボックス]の[コモンコントロール]カテゴリから、"TextBox"を選択し、フォームにドラッグ&ドロップして配置します。


TextBoxを選択しプロパティウィンドウを表示します。プロパティの"(DataBindings)"プロパティを開きます。下図の画面が表示されます。


"(DataBindings)"プロパティ内の"(詳細)"プロパティの右側の[...]ボタンを押します。下図の[フォーマットと詳細バインド]ダイアログが表示されます。


ダイアログ左側の[プロパティ]エリアで[共通]ノード内の[Text]ノードを選択します。右側の[バインド]エリアのコンボボックスを開きます。下図の状態となります。


コンボボックスのドロップダウンリストのツリービューを開きます。[他のデータソース]の[(フォーム名) 一覧インスタンス]ノードの[(データセットのインスタンス名)]ノードの[(テーブル名)]ノードを開きます。中にテーブル列の一覧が表示されるので、テキストボックスにバインドさせる列を選択します。下図の例では"SimpleProducts"テーブルの"id"列へテキストボックスをバインドしています。


[フォーマットと詳細バインド]ダイアログ戻ります。今回は書式設定は特にしないため、他の設定は変更しません。[形式の種類]も[書式設定なし]を選択します。設定後ダイアログボックスの[OK]ボタンを押してダイアログボックスを閉じます。


バインドされるとプロパティウィンドウの[(DataBindings)]プロパティのTextにバインド先が表示されます。


テキストボックスを追加で配置し同様の手順でバインドします。2つ目のテキストボックスは"SimpleProducts"テーブルの"ProductName"列に、3つ目のテキストボックスは"Price"列にバインドしました。


バインドが終わった状態が下図です。

コードの記述

TableAdapterからバインドしたコントロールへデータを流し込むコードを記述します。FormのLoadイベントにコードを記述します。
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);
    }
  }
}

解説

simpleProductTableAdapter1.Fill(myDataSet1.SimpleProduct);
TableAdapterのFillメソッドを呼び出してデータベースからデータを取得します。引数にはデータセットインスタンスの示すテーブルオブジェクトを指定します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示され、データベースのレコードがテキストボックスに表示されます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2012-09-13
iPentec all rights reserverd.