ListControl.DataSource プロパティ


この ListControl のデータ ソースを取得または設定します。Gets or sets the data source for this ListControl.

 property System::Object ^ DataSource { System::Object ^ get(); void set(System::Object ^ value); };
[System.ComponentModel.TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public object DataSource { get; set; }
member this.DataSource : obj with get, set
Public Property DataSource As Object


IList インターフェイスまたは IListSource インターフェイスを実装する、DataSet または Array などのオブジェクト。An object that implements the IList or IListSource interfaces, such as a DataSet or an Array. 既定値は、null です。The default is null.



代入された値に IList インターフェイスまたは IListSource インターフェイスが実装されていません。The assigned value does not implement the IList or IListSource interfaces.

次のコード例は、ListControl クラスによって実装される ListBox クラスの DataSourceDisplayMemberValueMember、および SelectedValue メンバーを使用する方法を示す完全なアプリケーションです。The following code example is a complete application that shows how you can use DataSource, DisplayMember, ValueMember, and SelectedValue members of the ListControl class as implemented by the ListBox class. この例では、ArrayList とリストボックスを読み込みます。The example loads an ArrayList and the list box. ユーザーがリストボックス内の項目を選択すると、選択した値が、選択した項目に関連付けられているデータを返すために使用されます。When the user selects an item in the list box, the selected value is used to return the data associated with the selected item.

#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Collections;
public ref class USState
   String^ myShortName;
   String^ myLongName;

   USState( String^ strLongName, String^ strShortName )
      this->myShortName = strShortName;
      this->myLongName = strLongName;

   property String^ ShortName 
      String^ get()
         return myShortName;

   property String^ LongName 
      String^ get()
         return myLongName;


public ref class ListBoxSample3: public Form
   ListBox^ ListBox1;
   Label^ label1;
   TextBox^ textBox1;

      ListBox1 = gcnew ListBox;
      label1 = gcnew Label;
      textBox1 = gcnew TextBox;
      this->ClientSize = System::Drawing::Size(307, 206 );
      this->Text = "ListBox Sample3";
      ListBox1->Location = Point(54,16);
      ListBox1->Name = "ListBox1";
      ListBox1->Size = System::Drawing::Size( 240, 130 );
      label1->Location = Point(14,150);
      label1->Name = "label1";
      label1->Size = System::Drawing::Size(40, 24);
      label1->Text = "Value";
      textBox1->Location = Point(54,150);
      textBox1->Name = "textBox1";
      textBox1->Size = System::Drawing::Size( 240, 24 );
      array<Control^>^temp2 = {ListBox1,label1, textBox1};
      this->Controls->AddRange( temp2 );

      // Populate the list box using an array as DataSource. 
      // DisplayMember is used to display just the long name of each state.
      ArrayList^ USStates = gcnew ArrayList;
      USStates->Add( gcnew USState( "Alabama","AL" ) );
      USStates->Add( gcnew USState( "Washington","WA" ) );
      USStates->Add( gcnew USState( "West Virginia","WV" ) );
      USStates->Add( gcnew USState( "Wisconsin","WI" ) );
      USStates->Add( gcnew USState( "Wyoming","WY" ) );
      ListBox1->DataSource = USStates;
      ListBox1->DisplayMember = "LongName";
      ListBox1->ValueMember = "ShortName";
      ListBox1->SelectedValueChanged += gcnew EventHandler( this, &ListBoxSample3::ListBox1_SelectedValueChanged );
      ListBox1->SetSelected(0, false);

   void InitializeComponent(){}

   void ListBox1_SelectedValueChanged( Object^ /*sender*/, EventArgs^ /*e*/ )
      if ( ListBox1->SelectedIndex != -1 )
            textBox1->Text = ListBox1->SelectedValue->ToString();

int main()
   Application::Run( gcnew ListBoxSample3 );
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;

namespace MyListControlSample
    public class ListBoxSample3 : Form
        private ListBox ListBox1 = new ListBox();
        private Label label1 = new Label();
        private TextBox textBox1 = new TextBox();

        static void Main()
            Application.Run(new ListBoxSample3());

        public ListBoxSample3()
            this.ClientSize = new Size(307, 206);
            this.Text = "ListBox Sample3";

            ListBox1.Location = new Point(54, 16);
            ListBox1.Name = "ListBox1";
            ListBox1.Size = new Size(240, 130);

            label1.Location = new Point(14, 150);
            label1.Name = "label1";
            label1.Size = new Size(40, 24);
            label1.Text = "Value";

            textBox1.Location = new Point(54, 150);
            textBox1.Name = "textBox1";
            textBox1.Size = new Size(240, 24);
            this.Controls.AddRange(new Control[] { ListBox1, label1, textBox1 });

            // Populate the list box using an array as DataSource.
            ArrayList USStates = new ArrayList();
            USStates.Add(new USState("Alabama", "AL"));
            USStates.Add(new USState("Washington", "WA"));
            USStates.Add(new USState("West Virginia", "WV"));
            USStates.Add(new USState("Wisconsin", "WI"));
            USStates.Add(new USState("Wyoming", "WY"));
            ListBox1.DataSource = USStates;

            // Set the long name as the property to be displayed and the short
            // name as the value to be returned when a row is selected.  Here
            // these are properties; if we were binding to a database table or
            // query these could be column names.
            ListBox1.DisplayMember = "LongName";
            ListBox1.ValueMember = "ShortName";

            // Bind the SelectedValueChanged event to our handler for it.
            ListBox1.SelectedValueChanged += 
                new EventHandler(ListBox1_SelectedValueChanged);

            // Ensure the form opens with no rows selected.

        private void InitializeComponent()

        private void ListBox1_SelectedValueChanged(object sender, EventArgs e)
            if (ListBox1.SelectedIndex != -1)
                textBox1.Text = ListBox1.SelectedValue.ToString();
                // If we also wanted to get the displayed text we could use
                // the SelectedItem item property:
                // string s = ((USState)ListBox1.SelectedItem).LongName;

    public class USState
        private string myShortName;
        private string myLongName;

        public USState(string strLongName, string strShortName)

            this.myShortName = strShortName;
            this.myLongName = strLongName;

        public string ShortName
                return myShortName;

        public string LongName

                return myLongName;
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Collections

Public Class ListBoxSample3
    Inherits Form

    Private ListBox1 As New ListBox()
    Private label1 As New Label()
    Private textBox1 As New TextBox()

    <STAThread()> _
    Shared Sub Main()
        Application.Run(New ListBoxSample3())
    End Sub

    Public Sub New()
        Me.ClientSize = New Size(307, 206)
        Me.Text = "ListBox Sample3"

        ListBox1.Location = New Point(54, 16)
        ListBox1.Name = "ListBox1"
        ListBox1.Size = New Size(240, 130)

        label1.Location = New Point(14, 150)
        label1.Name = "label1"
        label1.Size = New Size(40, 24)
        label1.Text = "Value"

        textBox1.Location = New Point(54, 150)
        textBox1.Name = "textBox1"
        textBox1.Size = New Size(240, 24)

        Me.Controls.AddRange(New Control() {ListBox1, label1, textBox1})

        ' Populate the list box using an array as DataSource. 
        Dim USStates As New ArrayList()
        USStates.Add(New USState("Alabama", "AL"))
        USStates.Add(New USState("Washington", "WA"))
        USStates.Add(New USState("West Virginia", "WV"))
        USStates.Add(New USState("Wisconsin", "WI"))
        USStates.Add(New USState("Wyoming", "WY"))
        ListBox1.DataSource = USStates

        ' Set the long name as the property to be displayed and the short
        ' name as the value to be returned when a row is selected.  Here
        ' these are properties; if we were binding to a database table or
        ' query these could be column names.
        ListBox1.DisplayMember = "LongName"
        ListBox1.ValueMember = "ShortName"

        ' Bind the SelectedValueChanged event to our handler for it.
        AddHandler ListBox1.SelectedValueChanged, AddressOf ListBox1_SelectedValueChanged

        ' Ensure the form opens with no rows selected.
    End Sub

    Private Sub InitializeComponent()
    End Sub

    Private Sub ListBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As EventArgs)
        If ListBox1.SelectedIndex <> -1 Then
            textBox1.Text = ListBox1.SelectedValue.ToString()
            ' If we also wanted to get the displayed text we could use
            ' the SelectedItem item property:
            ' Dim s = CType(ListBox1.SelectedItem, USState).LongName
        End If
    End Sub
End Class

Public Class USState
    Private myShortName As String
    Private myLongName As String

    Public Sub New(ByVal strLongName As String, ByVal strShortName As String)
        Me.myShortName = strShortName
        Me.myLongName = strLongName
    End Sub

    Public ReadOnly Property ShortName() As String
            Return myShortName
        End Get
    End Property

    Public ReadOnly Property LongName() As String
            Return myLongName
        End Get
    End Property

End Class


ComboBoxListBox コントロールには、2とおりの方法で入力できます。There are two ways to fill the ComboBox and ListBox controls.

たとえば、Add メソッドを使用して、ComboBox にオブジェクトを追加できます。For example, you can add objects to the ComboBox by using the Add method. また、DataSourceDisplayMember、および ValueMember プロパティを使用して、ComboBox にオブジェクトを追加して、ComboBoxに入力することもできます。You can also add objects to a ComboBox by using the DataSource, DisplayMember, and ValueMember properties to fill the ComboBox.

DataSource プロパティが設定されている場合、ユーザーは項目のコレクションを変更できません。When the DataSource property is set, a user cannot modify the items collection.

DataSource プロパティを設定すると、データソースが変更されると、DataSourceChanged イベントが発生します。If setting the DataSource property causes the data source to change, the DataSourceChanged event is raised. このプロパティを設定するとデータメンバーが変更される場合は、DisplayMemberChanged イベントが発生します。If setting this property causes the data member to change, the DisplayMemberChanged event is raised.

DataSourcenullに設定すると、DisplayMember が空の文字列 ("") に設定されます。When you set DataSource to null, DisplayMember is set to an empty string ("").