方法: Windows フォームでデータ間を移動するHow to: Navigate Data in Windows Forms

Windows アプリケーションでは、データソース内のレコード間を移動する最も簡単な方法は、 BindingSourceコンポーネントをデータソースにバインドしてから、 BindingSourceコントロールをにバインドすることです。In a Windows application, the easiest way to navigate through records in a data source is to bind a BindingSource component to the data source and then bind controls to the BindingSource. その後、、 BindingSourceMovePreviousおよびMoveNext MoveLastの組み込みナビゲーションメソッドをMoveFirst使用できます。You can then use the built-in navigation method on the BindingSource such a MoveNext, MoveLast, MovePrevious and MoveFirst. これらのメソッドを使用するPositionCurrentBindingSourceのプロパティとプロパティが適切に調整されます。Using these methods will adjust the Position and Current properties of the BindingSource appropriately. また、 Positionプロパティを設定して、項目を検索し、現在の項目として設定することもできます。You can also find an item and set it as the current item by setting the Position property.

データソース内の位置をインクリメントするにはTo increment the position in a data source

  1. バインドされたデータBindingSourceののプロパティを、移動先のレコード位置に設定します。PositionSet the Position property of the BindingSource for your bound data to the record position to go to. をクリックしMoveNextたときnextButtonに、 BindingSourceのメソッドを使用しPositionてプロパティをインクリメントする例を次に示します。The following example illustrates using the MoveNext method of the BindingSource to increment the Position property when the nextButton is clicked. BindingSource 、データCustomers セットNorthwindのテーブルに関連付けられています。The BindingSource is associated with the Customers table of a dataset Northwind.

    注意

    Positionこのプロパティを最初または最後のレコードを超えた値に設定しても、エラーは発生しません。 .NET Framework では、リストの範囲外の値に位置を設定することができないためです。Setting the Position property to a value beyond the first or last record does not result in an error, as the .NET Framework will not allow you to set the position to a value outside the bounds of the list. 最初または最後のレコードがなくなったかどうかを確認するためにアプリケーションで重要な場合は、データ要素数を超えるかどうかをテストするロジックを含めます。If it is important in your application to know whether you have gone past the first or last record, include logic to test whether you will exceed the data element count.

    private void nextButton_Click(object sender, System.EventArgs e)
    {
        this.customersBindingSource.MoveNext();
    }
    
    Private Sub nextButton_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles nextButton.Click
        Me.customersBindingSource.MoveNext()
    End Sub
    

終了を超えたかどうかを確認するにはTo check whether you have passed the end or beginning

  1. PositionChanged イベントのイベント ハンドラーを作成します。Create an event handler for the PositionChanged event. ハンドラーでは、提案された位置の値が実際のデータ要素数を超えたかどうかをテストできます。In the handler, you can test whether the proposed position value has exceeded the actual data element count.

    次の例は、最後のデータ要素に到達したかどうかをテストする方法を示しています。The following example illustrates how you can test whether you have reached the last data element. この例では、最後の要素にある場合、フォームの [次へ] ボタンは無効になっています。In the example, if you are at the last element, the Next button on the form is disabled.

    注意

    コード内で移動するリストを変更する場合は、ユーザーが新しいリストの長さ全体を参照できるように、 [次へ] ボタンを再度有効にする必要があることに注意してください。Be aware that, should you change the list you are navigating in code, you should re-enable the Next button, so that users may browse the entire length of the new list. また、使用している特定PositionChanged BindingSourceののイベントがイベント処理メソッドに関連付けられている必要があることに注意してください。Additionally, be aware that the above PositionChanged event for the specific BindingSource you are working with needs to be associated with its event-handling method. PositionChangedイベントを処理するメソッドの例を次に示します。The following is an example of a method for handling the PositionChanged event:

    void customersBindingSource_PositionChanged(object sender, EventArgs e)
    {
        if (customersBindingSource.Position == customersBindingSource.Count - 1)
            nextButton.Enabled = false;
        else
            nextButton.Enabled = true;
    }
    
    Sub customersBindingSource_PositionChanged(ByVal sender As Object, _
        ByVal e As EventArgs)
    
        If customersBindingSource.Position = _
            customersBindingSource.Count - 1 Then
            nextButton.Enabled = False
        Else
            nextButton.Enabled = True
        End If
    End Sub
    

項目を検索して現在の項目として設定するにはTo find an item and set it as the current item

  1. 現在のアイテムとして設定するレコードを探します。Find the record you wish to set as the current item. データソースがFind BindingSourceを実装IBindingListしている場合は、のメソッドを使用してこれを行うことができます。You can do this using the Find method of the BindingSource, if your data source implements IBindingList. を実装IBindingListするデータソースの例としDataViewて、とがBindingList<T>あります。Some examples of data sources that implement IBindingList are BindingList<T> and DataView.

    void findButton_Click(object sender, EventArgs e)
    {
        int foundIndex = customersBindingSource.Find("CustomerID", "ANTON");
        customersBindingSource.Position = foundIndex;
    }
    
    Sub findButton_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles findButton.Click
        Dim foundIndex As Integer = customersBindingSource.Find("CustomerID", _
            "ANTON")
        customersBindingSource.Position = foundIndex
    End Sub
    

関連項目See also