ListControl.DataSource 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定這個 ListControl 的資料來源。
public:
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; }
public object DataSource { get; set; }
public object? DataSource { get; set; }
[<System.ComponentModel.TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")>]
member this.DataSource : obj with get, set
member this.DataSource : obj with get, set
Public Property DataSource As Object
屬性值
實作 IList 或 IListSource 介面的物件,例如 DataSet 或 Array。 預設為 null
。
- 屬性
例外狀況
指派的值並未實作 IList 或 IListSource 介面。
範例
下列程式碼範例是一個完整的應用程式,示範如何使用 DataSource 類別實作 ListBox 的 ListControl 、 DisplayMember 、 ValueMember 和 SelectedValue 類別成員。 此範例會載入 ArrayList 和 清單方塊。 當使用者在清單方塊中選取專案時,會使用選取的值來傳回與選取專案相關聯的資料。
#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
{
private:
String^ myShortName;
String^ myLongName;
public:
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
{
private:
ListBox^ ListBox1;
Label^ label1;
TextBox^ textBox1;
public:
ListBoxSample3()
{
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(){}
private:
void ListBox1_SelectedValueChanged( Object^ /*sender*/, EventArgs^ /*e*/ )
{
textBox1->Text="";
if ( ListBox1->SelectedIndex != -1 )
textBox1->Text = ListBox1->SelectedValue->ToString();
}
};
[STAThread]
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();
[STAThread]
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.
ListBox1.ClearSelected();
}
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
{
get
{
return myShortName;
}
}
public string LongName
{
get
{
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.
ListBox1.ClearSelected()
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
Get
Return myShortName
End Get
End Property
Public ReadOnly Property LongName() As String
Get
Return myLongName
End Get
End Property
End Class
備註
有兩種方式可以填滿 ComboBox 和 ListBox 控制項。
例如,您可以使用 方法將 物件新增至 ComboBoxAdd 。 您也可以使用 、 和 屬性,將 物件加入至 ComboBox ,以填入 ComboBox 。 ValueMemberDisplayMemberDataSource
DataSource設定 屬性時,使用者無法修改專案集合。
如果設定 DataSource 屬性會導致資料來源變更,則會 DataSourceChanged 引發 事件。 如果設定此屬性會導致資料成員變更,則會 DisplayMemberChanged 引發 事件。
當您將 設定 DataSource 為 null
時, DisplayMember 會設定為空字串 (「」「) 。