Share via


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

更新 : 2011 年 3 月

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

注意

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

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

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

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

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

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

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

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

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

必須コンポーネント

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

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

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

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

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

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

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

データ ソースの作成

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

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

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

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

  4. [データベース モデルの選択] ページで、[データセット] が指定されていることを確認し、[次へ] をクリックします。

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

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

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

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

  9. 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
    

    注意

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

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

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

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

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

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

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

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

  2. Form2 の 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 の Customer データ グリッドを右クリックし、[プロパティ] をクリックします。

  2. [プロパティ] ウィンドウ ツール バーの [イベント] をクリックします。

  3. CellDoubleClick イベントをダブルクリックします。

    コード エディターが表示されます。

  4. メソッド定義を次のサンプルのように更新します。

    Private Sub CustomersDataGridView_DoubleClick() 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 を開きます。

次の手順

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

参照

概念

Visual Studio でのデータへの Windows フォーム コントロールのバインド

データ ソースの概要

TableAdapter の概要

Visual Studio でのデータへのコントロールのバインド

その他の技術情報

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

Visual Studio でのデータへの接続

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

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

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

データの検証

データの保存

履歴の変更

日付

履歴

理由

2011 年 3 月

コード例のエラーを除去。

カスタマー フィードバック