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

 

公開日: 2016年4月

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

注意

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

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

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

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

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

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

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

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

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

必須コンポーネント

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

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

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

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

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

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

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

データ ソースの作成

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

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

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

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

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

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

    • Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は選択します。

      または

    • [新しい接続] を選択して [接続の追加] または [接続の変更] ダイアログ ボックスを表示します。

  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. Form2Form2_Load メソッドの後に次のコードを追加します。

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

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

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

  1. Form1 の Customer データ グリッドを右クリックし、[プロパティ] をクリックします。

  2. [プロパティ] ウィンドウで、[イベント] をクリックします。

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

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

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

            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();
            }
    
        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
    

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

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

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

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

次の手順

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

参照

データに関するチュートリアル
Visual Studio でのデータへの Windows フォーム コントロールのバインド
データ ソースの概要
TableAdapter の概要
Visual Studio でのデータへの接続
アプリケーションでデータを受け取る準備
アプリケーションへのデータのフェッチ
Visual Studio でのデータへのコントロールのバインド
アプリケーションでのデータ編集
データの検証
データの保存