次の方法で共有


方法: Windows フォーム内のデータを移動する

Windows アプリケーションでは、データ ソース内のレコード間を移動する最も簡単な方法は、BindingSource コンポーネントをデータ ソースにバインドし、コントロールを BindingSourceにバインドすることです。 その後、MoveNextMoveLastMovePreviousMoveFirstなどの BindingSource に組み込みのナビゲーションメソッドを使用できます。 これらのメソッドを使用すると、BindingSourcePosition プロパティと Current プロパティが適切に調整されます。 Position プロパティを設定することで、アイテムを検索し、現在のアイテムとして設定することもできます。

データ ソース内の位置をインクリメントするには

  1. バインドされたデータの BindingSourcePosition プロパティを、移動先のレコード位置に設定します。 次の例は、nextButton がクリックされたときに、BindingSourceMoveNext メソッドを使用して Position プロパティをインクリメントする方法を示しています。 BindingSource は、データセット NorthwindCustomers テーブルに関連付けられています。

    手記

    Position プロパティを最初のレコードまたは最後のレコードを超える値に設定してもエラーは発生しません。.NET Framework では、リストの範囲外の値に位置を設定できません。 最初のレコードまたは最後のレコードを超えたかどうかをアプリケーションで把握することが重要な場合は、データ要素の数を超えるかどうかをテストするロジックを含めます。

    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
    

末尾または先頭を超えたかどうかを確認するには

  1. PositionChanged イベントのイベント ハンドラーを作成します。 ハンドラーでは、提案された位置の値が実際のデータ要素数を超えたかどうかをテストできます。

    次の例は、最後のデータ要素に到達したかどうかをテストする方法を示しています。 この例では、最後の要素にいる場合は、フォームの [次へ] ボタン 無効になります。

    手記

    コード内で移動するリストを変更する場合は、[次 へ] ボタン 再度有効にして、ユーザーが新しいリストの長さ全体を参照できるようにする必要があることに注意してください。 さらに、操作している特定の BindingSource に対する上記の PositionChanged イベントは、そのイベント処理メソッドに関連付ける必要があることに注意してください。 PositionChanged イベントを処理するメソッドの例を次に示します。

    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
    

アイテムを検索して現在のアイテムとして設定するには

  1. 現在のアイテムとして設定するレコードを見つけます。 データ ソースが IBindingListを実装している場合は、BindingSourceFind メソッドを使用してこれを行うことができます。 IBindingList を実装するデータ ソースの例としては、BindingList<T>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
    

関連項目