次の方法で共有


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

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

[!メモ]

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

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

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

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

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

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

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

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

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

必須コンポーネント

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

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

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

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

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

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

    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 でのデータへの接続