次の方法で共有


BindingContext.Item[] プロパティ

定義

BindingManagerBase を取得します。

オーバーロード

Item[Object, String]

指定したデータ ソースおよびデータ メンバーに関連付けられた BindingManagerBase を取得します。

Item[Object]

指定したデータ ソースに関連付けられた BindingManagerBase を取得します。

Item[Object, String]

指定したデータ ソースおよびデータ メンバーに関連付けられた BindingManagerBase を取得します。

public:
 property System::Windows::Forms::BindingManagerBase ^ default[System::Object ^, System::String ^] { System::Windows::Forms::BindingManagerBase ^ get(System::Object ^ dataSource, System::String ^ dataMember); };
public System.Windows.Forms.BindingManagerBase this[object dataSource, string dataMember] { get; }
public System.Windows.Forms.BindingManagerBase this[object dataSource, string? dataMember] { get; }
member this.Item(obj * string) : System.Windows.Forms.BindingManagerBase
Default Public ReadOnly Property Item(dataSource As Object, dataMember As String) As BindingManagerBase

パラメーター

dataSource
Object

特定の BindingManagerBase に関連付けられたデータ ソース。

dataMember
String

特定の BindingManagerBase に解決される情報を保持するナビゲーション パス。

プロパティ値

指定したデータ ソースおよびデータ メンバーの BindingManagerBase

例外

指定された dataMember がデータ ソース内に存在しません。

次のコード例では、 を使用して特定の Item[] バインディングの を BindingManagerBase 取得する方法を示します。 また、 の イベントBindingManagerBaseBindingComplete処理して、コントロール値の 1 つが変更されたときに、同じデータ ソースにバインドされた複数のコントロールが確実に同期されるようにする方法も示します。 この例を実行するには、コードを Windows フォームに貼り付け、フォームのコンストラクターまたはLoadイベント処理メソッドから メソッドを呼び出InitializeControlsAndDataします。

private void InitializeControlsAndData()
{
    // Initialize the controls and set location, size and 
    // other basic properties.
    this.dataGridView1 = new DataGridView();
    
    this.textBox1 = new TextBox();
    this.textBox2 = new TextBox();
    this.dataGridView1.ColumnHeadersHeightSizeMode =
        DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    this.dataGridView1.Dock = DockStyle.Top;
    this.dataGridView1.Location = new Point(0, 0);
    this.dataGridView1.Size = new Size(292, 150);
    this.textBox1.Location = new Point(132, 156);
    this.textBox1.Size = new Size(100, 20);
    this.textBox2.Location = new Point(12, 156);
    this.textBox2.Size = new Size(100, 20);
    this.ClientSize = new Size(292, 266);
    this.Controls.Add(this.textBox2);
    this.Controls.Add(this.textBox1);
    this.Controls.Add(this.dataGridView1);

    // Declare the DataSet and add a table and column.
    DataSet set1 = new DataSet();
    set1.Tables.Add("Menu");
    set1.Tables[0].Columns.Add("Beverages");

    // Add some rows to the table.
    set1.Tables[0].Rows.Add("coffee");
    set1.Tables[0].Rows.Add("tea");
    set1.Tables[0].Rows.Add("hot chocolate");
    set1.Tables[0].Rows.Add("milk");
    set1.Tables[0].Rows.Add("orange juice");

    // Add the control data bindings.
    dataGridView1.DataSource = set1;
    dataGridView1.DataMember = "Menu";
    textBox1.DataBindings.Add("Text", set1,
        "Menu.Beverages", true, DataSourceUpdateMode.OnPropertyChanged);
    textBox2.DataBindings.Add("Text", set1,
        "Menu.Beverages", true, DataSourceUpdateMode.OnPropertyChanged);

    BindingManagerBase bmb = this.BindingContext[set1, "Menu"];
    bmb.BindingComplete += new BindingCompleteEventHandler(bmb_BindingComplete);
}

private void bmb_BindingComplete(object sender, BindingCompleteEventArgs e)
{
    // Check if the data source has been updated, and that no error has occurred.
    if (e.BindingCompleteContext ==
        BindingCompleteContext.DataSourceUpdate && e.Exception == null)

        // If not, end the current edit.
        e.Binding.BindingManagerBase.EndCurrentEdit(); ;
}
Dim WithEvents bmb As BindingManagerBase

Private Sub InitializeControlsAndData() 
    ' Initialize the controls and set location, size and 
    ' other basic properties.
    Me.dataGridView1 = New DataGridView()
    
    Me.textBox1 = New TextBox()
    Me.textBox2 = New TextBox()
    Me.dataGridView1.ColumnHeadersHeightSizeMode = _
        DataGridViewColumnHeadersHeightSizeMode.AutoSize
    Me.dataGridView1.Dock = DockStyle.Top
    Me.dataGridView1.Location = New Point(0, 0)
    Me.dataGridView1.Size = New Size(292, 150)
    Me.textBox1.Location = New Point(132, 156)
    Me.textBox1.Size = New Size(100, 20)
    Me.textBox2.Location = New Point(12, 156)
    Me.textBox2.Size = New Size(100, 20)
    Me.ClientSize = New Size(292, 266)
    Me.Controls.Add(Me.textBox2)
    Me.Controls.Add(Me.textBox1)
    Me.Controls.Add(Me.dataGridView1)
    
    ' Declare the DataSet and add a table and column.
    Dim set1 As New DataSet()
    set1.Tables.Add("Menu")
    set1.Tables(0).Columns.Add("Beverages")
    
    ' Add some rows to the table.
    set1.Tables(0).Rows.Add("coffee")
    set1.Tables(0).Rows.Add("tea")
    set1.Tables(0).Rows.Add("hot chocolate")
    set1.Tables(0).Rows.Add("milk")
    set1.Tables(0).Rows.Add("orange juice")

    ' Add the control data bindings.
    dataGridView1.DataSource = set1
    dataGridView1.DataMember = "Menu"
    textBox1.DataBindings.Add("Text", set1, "Menu.Beverages", _
        True, DataSourceUpdateMode.OnPropertyChanged)
    textBox2.DataBindings.Add("Text", set1, "Menu.Beverages", _
        True, DataSourceUpdateMode.OnPropertyChanged)

    ' Get the BindingManagerBase for this binding.
    bmb = Me.BindingContext(set1, "Menu")

End Sub

Private Sub bmb_BindingComplete(ByVal sender As Object, ByVal e As BindingCompleteEventArgs) _
    Handles bmb.BindingComplete

    ' Check if the data source has been updated, and that no error has occurred.
    If e.BindingCompleteContext = BindingCompleteContext.DataSourceUpdate _
        AndAlso e.Exception Is Nothing Then

        ' If not, end the current edit.
        e.Binding.BindingManagerBase.EndCurrentEdit()
    End If
End Sub

注釈

でデータ ソースに複数のオブジェクトが含まれるオブジェクトのBindingセットを管理する場合BindingManagerBaseは、このオーバーロードを使用します。 たとえば、 には DataSet 、オブジェクトによってリンクされた複数の DataTable オブジェクトを DataRelation 含めることができます。 このような場合、 が正しい BindingManagerBaseを返せるようにBindingContextするには、ナビゲーション パスが必要です。

Note

パラメーターが有効な場合、プロパティはItem[]常に をdataMemberBindingManagerBaseします。 は返 nullされません。

Binding使用可能なデータ ソースの一覧と、コントロールとデータ ソース間のバインディングの作成については、 クラスを参照してください。

目的のが BindingManagerBase リストを管理する場合は、ナビゲーション パスもリストで終わる必要があります。 たとえば、次の C# コードは TextBox 、注文テーブルの注文日にコントロールをバインドします。 ナビゲーション パスには、 、 TableNameRelationNameColumnName含まれます。 ただし、 はBindingManagerBase、 と RelationName (リストにTableName解決される) のみを使用して取得する必要があります。

// The navigation path for a Binding ends with a property.  
textBox1.DataBindings.Add  
("Text", dataSet1, "Customers.custToOrders.OrderDate");  
// The navigation path for the BindingManagerBase ends with a list.  
BindingManagerBase bmOrders = this.BindingContext  
[dataSet1, "Customers.custToOrders"];  

を返す BindingManagerBase場合は、 と同じデータ ソース Binding を使用し、ナビゲーション パスのみを変更する必要があります。

メソッドを Contains 使用して、目的の が既に BindingManagerBase 存在するかどうかを確認します。

こちらもご覧ください

適用対象

Item[Object]

指定したデータ ソースに関連付けられた BindingManagerBase を取得します。

public:
 property System::Windows::Forms::BindingManagerBase ^ default[System::Object ^] { System::Windows::Forms::BindingManagerBase ^ get(System::Object ^ dataSource); };
public System.Windows.Forms.BindingManagerBase this[object dataSource] { get; }
member this.Item(obj) : System.Windows.Forms.BindingManagerBase
Default Public ReadOnly Property Item(dataSource As Object) As BindingManagerBase

パラメーター

dataSource
Object

特定の BindingManagerBase に関連付けられたデータ ソース。

プロパティ値

指定したデータ ソースの BindingManagerBase

次のコード例では、3 つのBindingManagerBaseオブジェクトを返します。1 つは 、 DataViewの場合は 1 つ、ArrayListコントロールにTextBox属する の Binding は 1 つDataSourceです。

void ReturnBindingManagerBase()
{
   
   // Get the BindingManagerBase for a DataView. 
   BindingManagerBase^ bmCustomers = this->BindingContext[ myDataView ];
   
   /* Get the BindingManagerBase for an ArrayList. */
   BindingManagerBase^ bmOrders = this->BindingContext[ myArrayList ];
   
   // Get the BindingManagerBase for a TextBox control.
   BindingManagerBase^ baseArray = this->BindingContext[ textBox1->DataBindings[ nullptr ]->DataSource ];
}
private void ReturnBindingManagerBase()
{
   // Get the BindingManagerBase for a DataView. 
   BindingManagerBase bmCustomers = 
   this.BindingContext [myDataView];

   /* Get the BindingManagerBase for an ArrayList. */ 
   BindingManagerBase bmOrders = 
   this.BindingContext[myArrayList];

   // Get the BindingManagerBase for a TextBox control.
   BindingManagerBase baseArray = 
   this.BindingContext[textBox1.DataBindings[0].DataSource];
}
Private Sub ReturnBindingManagerBase()
   ' Get the BindingManagerBase for a DataView. 
   Dim bmCustomers As BindingManagerBase = _
      Me.BindingContext(myDataView)

   ' Get the BindingManagerBase for an ArrayList.
   Dim bmOrders As BindingManagerBase = _
      Me.BindingContext(myArrayList)

   ' Get the BindingManagerBase for a TextBox control.
   Dim baseArray As BindingManagerBase = _
      Me.BindingContext(Text1.DataBindings(0).DataSource)
End Sub

注釈

必要な がナビゲーション パスを BindingManagerBase 必要としない場合は、このオーバーロードを使用します。 たとえば、 で または DataTableDataSourceを使用するオブジェクトのBindingセットをArrayList管理する場合BindingManagerBase、ナビゲーション パスは必要ありません。

Note

プロパティは Item[] 常に を返し、 BindingManagerBaseを返 nullすことはありません。

Binding使用可能なデータ ソースの一覧と、コントロールとデータ ソース間のバインディングの作成については、 クラスを参照してください。

こちらもご覧ください

適用対象