次の方法で共有


チュートリアル : Windows アプリケーションのフォーム間でのデータの受け渡し

更新 : 2007 年 11 月

ここでは、データをフォーム間で受け渡す方法の詳細な手順について説明します。Northwind の顧客テーブルと注文テーブルを使って、1 つのフォームで顧客を選択し、選択された顧客の注文がもう 1 つのフォームに表示されるようにします。ここでは、最初のフォームからデータを受け取るもう 1 つのフォームにメソッドを作成する方法を示します。

ms171925.alert_note(ja-jp,VS.90).gifメモ :

ここで説明するのは、フォーム間でデータを渡す方法の 1 つにすぎません。フォームにデータを渡す他の方法として、データを受け取る 2 番目のコンストラクタを作成する方法や、最初のフォームからのデータで設定できるパブリック プロパティを作成する方法もあります。

このチュートリアルでは、以下のタスクを行います。

  • 新しい Windows アプリケーション プロジェクトを作成します。

  • データ ソース構成ウィザードを使用して、データセットを作成して構成します。

  • [データ ソース] ウィンドウから項目をドラッグしたときにフォーム上に作成するコントロールを選択します。詳細については、「方法 : [データ ソース] ウィンドウからドラッグしたときに作成されるコントロールを設定する」を参照してください。

  • [データ ソース] ウィンドウからフォームに項目をドラッグして、データ バインド コントロールを作成します。

  • データを表示するグリッドのある 2 番目のフォームを作成します。

  • 特定の顧客の注文をフェッチする TableAdapter クエリを作成します。

  • フォーム間でデータを渡します。

前提条件

このチュートリアルを実行するための要件は次のとおりです。

Windows アプリケーションの作成

新しい Windows プロジェクトを作成するには

  1. [ファイル] メニューで新しいプロジェクトを作成します。

  2. プロジェクトに PassingDataBetweenForms という名前を付けます。

  3. [Windows アプリケーション] をクリックし、[OK] をクリックします。詳細については、「Windows ベースのアプリケーションの作成」を参照してください。

    PassingDataBetweenForms プロジェクトが作成されてソリューション エクスプローラに追加されます。

データ ソースの作成

データ ソースを作成するには

  1. [データ] メニューの [データ ソースの表示] をクリックします。

  2. [データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。

  3. [データソースの種類を選択] ページで、[データベース] をクリックし、[次へ] をクリックします。

  4. [データ接続の選択] ページで、次のいずれかの操作を行います。

  5. データベースにパスワードが必要であり、重要情報を含めるオプションを有効にする場合は、このオプションを選択し、[次へ] をクリックします。

  6. [アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。

  7. [データベース オブジェクトの選択] ページの [テーブル] ノードを展開します。

  8. Customers テーブルと Orders テーブルを選択し、[完了] をクリックします。

    プロジェクトに NorthwindDataSet が追加され、[データ ソース] ウィンドウに Customers テーブルと Orders テーブルが表示されます。

最初のフォーム (Form1) の作成

[データ ソース] ウィンドウから [Customers] ノードをフォームにドラッグして、データ バインド グリッド (DataGridView コントロール) を作成します。

フォームにデータ バインド グリッドを作成するには

2 番目のフォーム (Form2) の作成

データの渡し先となる 2 番目のフォームを作成するには

  1. [プロジェクト] メニューの [Windows フォームの追加] をクリックします。

  2. 名前を既定の Form2 のままにして、[追加] をクリックします。

  3. [データ ソース] ウィンドウから Form2 にメインの [Orders] ノードをドラッグします。

    DataGridView と、レコード間を移動するためのツール ストリップ (BindingNavigator) が Form2 上に表示されます。NorthwindDataSetCustomersTableAdapterBindingSource、および BindingNavigator がコンポーネント トレイに表示されます。

  4. コンポーネント トレイから OrdersBindingNavigator を削除します。

    Form2 から OrdersBindingNavigator が消えます。

Form1 で選択した顧客の注文を読み込む TableAdapter クエリの Form2 への追加

TableAdapter クエリを作成するには

  1. ソリューション エクスプローラで NorthwindDataSet.xsd ファイルをダブルクリックします。

  2. [OrdersTableAdapter] を右クリックし、[クエリの追加] を選択します。

  3. [SQL ステートメントを使用する] を既定のオプションのままにして、[次へ] をクリックします。

  4. [複数行を返す SELECT] を既定のオプションのままにして、[次へ] をクリックします。

  5. CustomerID に基づいて Orders を返すために、クエリに WHERE 句を追加します。クエリは次のようになります。

    SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry
    FROM Orders 
    WHERE CustomerID = @CustomerID
    
    ms171925.alert_note(ja-jp,VS.90).gifメモ :

    データベース用のパラメータ構文が正しいことを確認してください。たとえば、Microsoft Access では、WHERE 句は WHERE CustomerID = ? のようになります。

  6. [次へ] をクリックします。

  7. [DataTable にデータを格納する] の [メソッド名] に「FillByCustomerID」と入力します。

  8. [DataTable を返す] オプションの選択を解除し、[次へ] をクリックします。

  9. [完了] をクリックします。

データの渡し先となる Form2 のメソッドの作成

データの渡し先のメソッドを作成するには

  1. Form2 を右クリックし、[コードの表示] を選択して、コード エディタで Form2 を開きます。

  2. フォームに自動的に追加された Form2_Load メソッドを次のコードで置き換えます。

    Friend Sub LoadOrders(ByVal CustomerID As String)
        OrdersTableAdapter.FillByCustomerID(NorthwindDataSet.Orders, CustomerID)
    End Sub
    
    internal void LoadOrders(String CustomerID)
    {
        ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
    }
    

データを渡し Form2 を表示する Form1 のメソッドの作成

Form2 にデータを渡すメソッドを作成するには

  1. Form1 を右クリックし、[コードの表示] を選択して、コード エディタで Form1 を開きます。

  2. Form1 の Form1_Load メソッドの下に次のコードを追加します。

    Private Sub CustomersDataGridView_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles CustomersDataGridView.DoubleClick
    
        Dim SelectedRowView As Data.DataRowView
        Dim SelectedRow As NorthwindDataSet.CustomersRow
    
        SelectedRowView = CType(CustomersBindingSource.Current, System.Data.DataRowView)
        SelectedRow = CType(SelectedRowView.Row, NorthwindDataSet.CustomersRow)
    
        Dim OrdersForm As New Form2
        OrdersForm.LoadOrders(SelectedRow.CustomerID)
        OrdersForm.Show()
    End Sub
    
    private void customersDataGridView_DoubleClick(object sender, EventArgs e)
    {
        System.Data.DataRowView SelectedRowView;
        NorthwindDataSet.CustomersRow SelectedRow;
    
        SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current;
        SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row;
    
        Form2 OrdersForm = new Form2();
        OrdersForm.LoadOrders(SelectedRow.CustomerID);
        OrdersForm.Show();
    }
    

アプリケーションの実行

アプリケーションを実行するには

  • F5 キーを押してアプリケーションを実行します。

  • Form1 で顧客レコードをダブルクリックして、その顧客の注文を表示する Form2 を開きます。

次の手順

フォーム間でデータを渡した後に、アプリケーションの要件に応じてさらに操作を追加して実行できます。このチュートリアルで行うことができる拡張には次のものがあります。

参照

概念

データの表示の概要

データ ソースの概要

TableAdapter の概要

その他の技術情報

データに関するチュートリアル

Visual Studio でのデータへの接続

アプリケーションでデータを受け取る準備

アプリケーションへのデータのフェッチ

Windows アプリケーションのフォームでのデータの表示

アプリケーションでのデータ編集

データの検証

データの保存