Bagikan melalui


BindingSource Kelas

Definisi

Merangkum sumber data untuk formulir.

public ref class BindingSource : System::ComponentModel::Component, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ICancelAddNew, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList, System::Windows::Forms::ICurrencyManagerProvider
public ref class BindingSource : System::ComponentModel::Component, System::Collections::IList, System::ComponentModel::IBindingListView, System::ComponentModel::ICancelAddNew, System::ComponentModel::ISupportInitialize, System::ComponentModel::ISupportInitializeNotification, System::ComponentModel::ITypedList, System::Windows::Forms::ICurrencyManagerProvider
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
public class BindingSource : System.ComponentModel.Component, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ICancelAddNew, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList, System.Windows.Forms.ICurrencyManagerProvider
[System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
public class BindingSource : System.ComponentModel.Component, System.Collections.IList, System.ComponentModel.IBindingListView, System.ComponentModel.ICancelAddNew, System.ComponentModel.ISupportInitialize, System.ComponentModel.ISupportInitializeNotification, System.ComponentModel.ITypedList, System.Windows.Forms.ICurrencyManagerProvider
[<System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>]
type BindingSource = class
    inherit Component
    interface IBindingListView
    interface IBindingList
    interface IList
    interface ICollection
    interface IEnumerable
    interface ITypedList
    interface ICancelAddNew
    interface ISupportInitializeNotification
    interface ISupportInitialize
    interface ICurrencyManagerProvider
[<System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>]
type BindingSource = class
    inherit Component
    interface IBindingListView
    interface ICollection
    interface IEnumerable
    interface IList
    interface IBindingList
    interface ITypedList
    interface ICancelAddNew
    interface ISupportInitializeNotification
    interface ISupportInitialize
    interface ICurrencyManagerProvider
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitializeNotification, ITypedList
Public Class BindingSource
Inherits Component
Implements IBindingListView, ICancelAddNew, ICurrencyManagerProvider, IList, ISupportInitialize, ISupportInitializeNotification, ITypedList
Warisan
Atribut
Penerapan

Contoh

Contoh kode berikut menunjukkan terikat ListBox ke BindingSource. BindingSource terikat ke yang BindingList<T> berisi daftar font.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace BindingSourceExamples
{
    public class Form1 : Form
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }

        public Form1()
        {
            this.Load += new EventHandler(Form1_Load);
        }

        private TextBox textBox1;
        private Button button1;
        private ListBox listBox1;
       
        private BindingSource binding1;
        void Form1_Load(object sender, EventArgs e)
        {
            listBox1 = new ListBox();
            textBox1 = new TextBox();
            binding1 = new BindingSource();
            button1 = new Button();
            listBox1.Location = new Point(140, 25);
            listBox1.Size = new Size(123, 160);
            textBox1.Location = new Point(23, 70);
            textBox1.Size = new Size(100, 20);
            textBox1.Text = "Wingdings";
            button1.Location = new Point(23, 25);
            button1.Size = new Size(75, 23);
            button1.Text = "Search";
            button1.Click += new EventHandler(this.button1_Click);
            this.ClientSize = new Size(292, 266);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.listBox1);

            MyFontList fonts = new MyFontList();
            for (int i = 0; i < FontFamily.Families.Length; i++)
            {
                if (FontFamily.Families[i].IsStyleAvailable(FontStyle.Regular))
                    fonts.Add(new Font(FontFamily.Families[i], 11.0F, FontStyle.Regular));
            }
            binding1.DataSource = fonts;
            listBox1.DataSource = binding1;
            listBox1.DisplayMember = "Name";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (binding1.SupportsSearching != true)
            {
                MessageBox.Show("Cannot search the list.");
            }
            else
            {
                int foundIndex = binding1.Find("Name", textBox1.Text);
                if (foundIndex > -1)
                    listBox1.SelectedIndex = foundIndex;
                else
                    MessageBox.Show("Font was not found.");
            }
        }
    }
    
    public class MyFontList : BindingList<Font>
    {

        protected override bool SupportsSearchingCore
        {
            get { return true; }
        }
        protected override int FindCore(PropertyDescriptor prop, object key)
        {
            // Ignore the prop value and search by family name.
            for (int i = 0; i < Count; ++i)
            {
                if (Items[i].FontFamily.Name.ToLower() == ((string)key).ToLower())
                    return i;
            }
            return -1;
        }
    }
}
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Public Class Form1
    Inherits Form

    <STAThread()> _
    Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New Form1())

    End Sub

    Public Sub New()

    End Sub

    Private textBox1 As TextBox
    Private WithEvents button1 As Button
    Private listBox1 As ListBox
    Private components As IContainer
    Private binding1 As BindingSource

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        listBox1 = New ListBox()
        textBox1 = New TextBox()
        binding1 = New BindingSource()
        button1 = New Button()
        listBox1.Location = New Point(140, 25)
        listBox1.Size = New Size(123, 160)
        textBox1.Location = New Point(23, 70)
        textBox1.Size = New Size(100, 20)
        textBox1.Text = "Wingdings"
        button1.Location = New Point(23, 25)
        button1.Size = New Size(75, 23)
        button1.Text = "Search"
        Me.ClientSize = New Size(292, 266)
        Me.Controls.Add(Me.button1)
        Me.Controls.Add(Me.textBox1)
        Me.Controls.Add(Me.listBox1)

        Dim fonts As New MyFontList()
        Dim i As Integer
        For i = 0 To FontFamily.Families.Length - 1
            If FontFamily.Families(i).IsStyleAvailable(FontStyle.Regular) Then
                fonts.Add(New Font(FontFamily.Families(i), 11.0F, FontStyle.Regular))
            End If
        Next i
        binding1.DataSource = fonts
        listBox1.DataSource = binding1
        listBox1.DisplayMember = "Name"

    End Sub
    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button1.Click

        If binding1.SupportsSearching <> True Then
            MessageBox.Show("Cannot search the list.")
        Else
            Dim foundIndex As Integer = binding1.Find("Name", textBox1.Text)
            If foundIndex > -1 Then
                listBox1.SelectedIndex = foundIndex
            Else
                MessageBox.Show("Font was not found.")
            End If
        End If

    End Sub
End Class

Public Class MyFontList
    Inherits BindingList(Of Font)

    Protected Overrides ReadOnly Property SupportsSearchingCore() As Boolean
        Get
            Return True
        End Get
    End Property
    
    Protected Overrides Function FindCore(ByVal prop As PropertyDescriptor, _
        ByVal key As Object) As Integer
        ' Ignore the prop value and search by family name.
        Dim i As Integer
        While i < Count
            If Items(i).FontFamily.Name.ToLower() = CStr(key).ToLower() Then
                Return i
            End If
            i += 1
        End While

        Return -1
    End Function
End Class

Keterangan

Komponen ini BindingSource melayani banyak tujuan. Pertama, ini menyederhanakan kontrol pengikatan pada formulir ke data dengan menyediakan manajemen mata uang, pemberitahuan perubahan, dan layanan lain antara kontrol Formulir Windows dan sumber data. Ini dicapai dengan melampirkan BindingSource komponen ke sumber data Anda menggunakan DataSource properti . Untuk skenario pengikatan kompleks, Anda dapat secara opsional mengatur DataMember properti ke kolom atau daftar tertentu di sumber data. Anda kemudian mengikat kontrol ke BindingSource. Semua interaksi lebih lanjut dengan data dicapai dengan panggilan ke BindingSource komponen. Misalnya tentang cara BindingSource menyederhanakan proses pengikatan, lihat Cara: Mengikat Kontrol Formulir Windows ke Nilai Database DBNull dan Cara: Menangani Kesalahan dan Pengecualian yang Terjadi dengan Pengikatan Data. Navigasi dan pembaruan sumber data dilakukan melalui metode seperti MoveNext, MoveLast, dan Remove. Operasi seperti pengurutan dan pemfilteran ditangani melalui Sort properti dan Filter . Untuk informasi selengkapnya tentang menggunakan pengurutan dan pemfilteran dengan BindingSource, lihat Cara: Mengurutkan dan Memfilter Data ADO.NET dengan Komponen Formulir Windows BindingSource.

Selain itu, BindingSource komponen dapat bertindak sebagai sumber data yang sangat di ketik. Biasanya jenis sumber data yang mendasar diperbaiki melalui salah satu mekanisme berikut:

  • Add Gunakan metode untuk menambahkan item ke BindingSource komponen.

  • Atur properti ke DataSource daftar, objek tunggal, atau jenis.

Kedua mekanisme ini membuat daftar yang sangat di ketik. Untuk informasi selengkapnya tentang cara menggunakan untuk mengikat BindingSource ke jenis, lihat Cara: Mengikat Kontrol Formulir Windows ke Jenis. Anda juga dapat menggunakan BindingSource untuk mengikat kontrol Anda ke objek pabrik. Untuk informasi selengkapnya tentang cara melakukannya, lihat Cara: Mengikat Kontrol Formulir Windows ke Objek Pabrik.

Catatan

Karena menangani sumber data yang BindingSource sederhana dan kompleks, terminologi bermasalah. Dalam dokumentasi kelas ini, daftar istilah mengacu pada kumpulan data dalam sumber data yang dihosting, dan item menunjukkan satu elemen. Saat membahas fungsionalitas yang terkait dengan sumber data kompleks, tabel dan baris istilah yang setara digunakan.

BindingSource menyediakan anggota untuk mengakses data yang mendasar. Item saat ini dapat diambil melalui Current properti , dan seluruh daftar dapat diambil melalui List properti . Operasi pengeditan didukung pada item saat ini melalui Current dan RemoveCurrentmetode , , EndEditCancelEdit dan Add dan AddNew . Meskipun manajemen mata uang ditangani secara otomatis untuk semua jenis sumber data yang mendasar, kelas ini mengekspos sejumlah peristiwa, seperti CurrentItemChanged dan DataSourceChanged, yang memungkinkan penyesuaian.

Sumber data yang terikat ke BindingSource komponen juga dapat dinavigasi dan dikelola dengan BindingNavigator kelas , yang menyediakan antarmuka pengguna (UI) seperti VCR untuk menavigasi item dalam daftar. Meskipun BindingNavigator dapat terikat ke sumber data apa pun, itu dirancang untuk berintegrasi dengan BindingSource komponen melalui propertinya BindingNavigator.BindingSource .

Properti default untuk BindingSource kelas adalah DataSource. Peristiwa defaultnya adalah CurrentChanged.

Perhatian

Banyak anggota BindingSource kelas beroperasi pada daftar dasar yang diwakili oleh List properti dan cukup merujuk operasi mereka ke daftar yang mendasar. Oleh karena itu, ketika BindingSource terikat dengan implementasi IListkustom , perilaku yang tepat dari anggota ini mungkin berbeda dari perilaku yang dijelaskan dalam dokumentasi kelas. Misalnya, RemoveAt metode memanggil IList.RemoveAt. Dokumentasi menjelaskan BindingSourceRemoveAt metode dengan pemahaman bahwa RemoveAt metode untuk dasarnya IList diimplementasikan dengan benar.

Konstruktor

BindingSource()

Menginisialisasi instans BindingSource baru kelas ke nilai properti default.

BindingSource(IContainer)

Menginisialisasi instans BindingSource baru kelas dan menambahkan BindingSource ke kontainer yang ditentukan.

BindingSource(Object, String)

Menginisialisasi instans BindingSource baru kelas dengan sumber data dan anggota data yang ditentukan.

Properti

AllowEdit

Mendapatkan nilai yang menunjukkan apakah item dalam daftar yang mendasar dapat diedit.

AllowNew

Mendapatkan atau menetapkan nilai yang menunjukkan apakah AddNew() metode dapat digunakan untuk menambahkan item ke daftar.

AllowRemove

Mendapatkan nilai yang menunjukkan apakah item dapat dihapus dari daftar yang mendasar.

CanRaiseEvents

Mendapatkan nilai yang menunjukkan apakah komponen dapat menaikkan peristiwa.

(Diperoleh dari Component)
Container

IContainer Mendapatkan yang berisi Component.

(Diperoleh dari Component)
Count

Mendapatkan jumlah total item dalam daftar yang mendasar, dengan mempertimbangkan nilai saat ini Filter .

CurrencyManager

Mendapatkan manajer mata uang yang terkait dengan ini BindingSource.

Current

Mendapatkan item saat ini dalam daftar.

DataMember

Mendapatkan atau mengatur daftar tertentu di sumber data tempat konektor saat ini mengikat.

DataSource

Mendapatkan atau mengatur sumber data yang diikat konektor.

DesignMode

Mendapatkan nilai yang menunjukkan apakah Component saat ini dalam mode desain.

(Diperoleh dari Component)
Events

Mendapatkan daftar penanganan aktivitas yang dilampirkan ke ini Component.

(Diperoleh dari Component)
Filter

Mendapatkan atau mengatur ekspresi yang digunakan untuk memfilter baris mana yang ditampilkan.

IsBindingSuspended

Mendapatkan nilai yang menunjukkan apakah pengikatan daftar ditangguhkan.

IsFixedSize

Mendapatkan nilai yang menunjukkan apakah daftar yang mendasar memiliki ukuran tetap.

IsReadOnly

Mendapatkan nilai yang menunjukkan apakah daftar yang mendasar bersifat baca-saja.

IsSorted

Mendapatkan nilai yang menunjukkan apakah item dalam daftar yang mendasar diurutkan.

IsSynchronized

Mendapatkan nilai yang menunjukkan apakah akses ke koleksi disinkronkan (utas aman).

Item[Int32]

Mendapatkan atau mengatur elemen daftar pada indeks yang ditentukan.

List

Mendapatkan daftar yang terikat dengan konektor.

Position

Mendapatkan atau mengatur indeks item saat ini dalam daftar yang mendasar.

RaiseListChangedEvents

Mendapatkan atau menetapkan nilai yang menunjukkan apakah ListChanged peristiwa harus dinaikkan.

Site

Mendapatkan atau mengatur ISite dari Component.

(Diperoleh dari Component)
Sort

Mendapatkan atau mengatur nama kolom yang digunakan untuk pengurutan, dan urutan pengurutan untuk menampilkan baris di sumber data.

SortDescriptions

Mendapatkan kumpulan deskripsi pengurutan yang diterapkan ke sumber data.

SortDirection

Mendapatkan arah item dalam daftar diurutkan.

SortProperty

PropertyDescriptor Mendapatkan yang sedang digunakan untuk mengurutkan daftar.

SupportsAdvancedSorting

Mendapatkan nilai yang menunjukkan apakah sumber data mendukung pengurutan multi-kolom.

SupportsChangeNotification

Mendapatkan nilai yang menunjukkan apakah sumber data mendukung pemberitahuan perubahan.

SupportsFiltering

Mendapatkan nilai yang menunjukkan apakah sumber data mendukung pemfilteran.

SupportsSearching

Mendapatkan nilai yang menunjukkan apakah sumber data mendukung pencarian dengan Find(PropertyDescriptor, Object) metode .

SupportsSorting

Mendapatkan nilai yang menunjukkan apakah sumber data mendukung pengurutan.

SyncRoot

Mendapatkan objek yang dapat digunakan untuk menyinkronkan akses ke daftar yang mendasar.

Metode

Add(Object)

Menambahkan item yang sudah ada ke daftar internal.

AddNew()

Menambahkan item baru ke daftar yang mendasar.

ApplySort(ListSortDescriptionCollection)

Mengurutkan sumber data dengan deskripsi pengurutan yang ditentukan.

ApplySort(PropertyDescriptor, ListSortDirection)

Mengurutkan sumber data menggunakan pendeskripsi properti yang ditentukan dan arah pengurutan.

CancelEdit()

Membatalkan operasi edit saat ini.

Clear()

Menghapus semua elemen dari daftar.

Contains(Object)

Menentukan apakah objek adalah item dalam daftar.

CopyTo(Array, Int32)

Menyalin konten ke List array yang ditentukan, dimulai dari nilai indeks yang ditentukan.

CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
Dispose()

Merilis semua sumber daya yang Componentdigunakan oleh .

(Diperoleh dari Component)
Dispose(Boolean)

Merilis sumber daya tidak terkelola yang BindingSource digunakan oleh dan secara opsional merilis sumber daya terkelola.

EndEdit()

Menerapkan perubahan yang tertunda ke sumber data yang mendasar.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Find(PropertyDescriptor, Object)

Mencari indeks item yang memiliki pendeskripsi properti yang diberikan.

Find(String, Object)

Mengembalikan indeks item dalam daftar dengan nama dan nilai properti yang ditentukan.

GetEnumerator()

Mengambil enumerator untuk List.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetItemProperties(PropertyDescriptor[])

Mengambil array PropertyDescriptor objek yang mewakili properti yang dapat diikat dari jenis daftar sumber data.

GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetListName(PropertyDescriptor[])

Mendapatkan nama daftar yang menyediakan data untuk pengikatan.

GetRelatedCurrencyManager(String)

Mendapatkan pengelola mata uang terkait untuk anggota data yang ditentukan.

GetService(Type)

Mengembalikan objek yang mewakili layanan yang disediakan oleh Component atau oleh Container.

(Diperoleh dari Component)
GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
IndexOf(Object)

Mencari objek yang ditentukan dan mengembalikan indeks kemunculan pertama dalam seluruh daftar.

InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
Insert(Int32, Object)

Menyisipkan item ke dalam daftar pada indeks yang ditentukan.

MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
MoveFirst()

Berpindah ke item pertama dalam daftar.

MoveLast()

Berpindah ke item terakhir dalam daftar.

MoveNext()

Berpindah ke item berikutnya dalam daftar.

MovePrevious()

Berpindah ke item sebelumnya dalam daftar.

OnAddingNew(AddingNewEventArgs)

Memunculkan kejadian AddingNew.

OnBindingComplete(BindingCompleteEventArgs)

Memunculkan kejadian BindingComplete.

OnCurrentChanged(EventArgs)

Memunculkan kejadian CurrentChanged.

OnCurrentItemChanged(EventArgs)

Memunculkan kejadian CurrentItemChanged.

OnDataError(BindingManagerDataErrorEventArgs)

Memunculkan kejadian DataError.

OnDataMemberChanged(EventArgs)

Memunculkan kejadian DataMemberChanged.

OnDataSourceChanged(EventArgs)

Memunculkan kejadian DataSourceChanged.

OnListChanged(ListChangedEventArgs)

Memunculkan kejadian ListChanged.

OnPositionChanged(EventArgs)

Memunculkan kejadian PositionChanged.

Remove(Object)

Menghapus item yang ditentukan dari daftar.

RemoveAt(Int32)

Menghapus item pada indeks yang ditentukan dalam daftar.

RemoveCurrent()

Menghapus item saat ini dari daftar.

RemoveFilter()

Menghapus filter yang terkait dengan BindingSource.

RemoveSort()

Menghapus pengurutan yang terkait dengan BindingSource.

ResetAllowNew()

Menginisialisasi ulang AllowNew properti .

ResetBindings(Boolean)

Menyebabkan kontrol yang terikat ke BindingSource untuk dibaca ulang semua item dalam daftar dan menyegarkan nilai yang ditampilkan.

ResetCurrentItem()

Menyebabkan kontrol yang terikat ke BindingSource untuk dibaca ulang item yang saat ini dipilih dan menyegarkan nilai yang ditampilkan.

ResetItem(Int32)

Menyebabkan kontrol yang terikat ke BindingSource untuk dibaca ulang item pada indeks yang ditentukan, dan merefresh nilai yang ditampilkan.

ResumeBinding()

Melanjutkan pengikatan data.

SuspendBinding()

Menangguhkan pengikatan data untuk mencegah perubahan memperbarui sumber data terikat.

ToString()

Mengembalikan yang String berisi nama Component, jika ada. Metode ini tidak boleh ditimpa.

(Diperoleh dari Component)

Acara

AddingNew

Terjadi sebelum item ditambahkan ke daftar yang mendasar.

BindingComplete

Terjadi ketika semua klien telah terikat dengan ini BindingSource.

CurrentChanged

Terjadi ketika item yang saat ini terikat berubah.

CurrentItemChanged

Terjadi ketika nilai Current properti properti telah berubah.

DataError

Terjadi ketika pengecualian terkait mata uang ditangani secara diam-diam BindingSourceoleh .

DataMemberChanged

Terjadi ketika DataMember nilai properti telah berubah.

DataSourceChanged

Terjadi ketika DataSource nilai properti telah berubah.

Disposed

Terjadi ketika komponen dibuang oleh panggilan ke Dispose() metode .

(Diperoleh dari Component)
ListChanged

Terjadi ketika daftar yang mendasar berubah atau item dalam daftar berubah.

PositionChanged

Terjadi setelah nilai Position properti berubah.

Implementasi Antarmuka Eksplisit

IBindingList.AddIndex(PropertyDescriptor)

Menambahkan ke PropertyDescriptor indeks yang digunakan untuk pencarian.

IBindingList.RemoveIndex(PropertyDescriptor)

PropertyDescriptor Menghapus dari indeks yang digunakan untuk pencarian.

ICancelAddNew.CancelNew(Int32)

Membuang item baru yang tertunda dari koleksi.

ICancelAddNew.EndNew(Int32)

Menerapkan item baru yang tertunda ke koleksi.

ISupportInitialize.BeginInit()

Menandakan BindingSource bahwa inisialisasi dimulai.

ISupportInitialize.EndInit()

Menandakan BindingSource bahwa inisialisasi selesai.

ISupportInitializeNotification.Initialized

Terjadi ketika diinisialisasi BindingSource .

ISupportInitializeNotification.IsInitialized

Mendapatkan nilai yang menunjukkan apakah diinisialisasi BindingSource .

Metode Ekstensi

Cast<TResult>(IEnumerable)

Mentransmisikan elemen dari IEnumerable ke jenis yang ditentukan.

OfType<TResult>(IEnumerable)

Memfilter elemen berdasarkan IEnumerable jenis tertentu.

AsParallel(IEnumerable)

Mengaktifkan paralelisasi kueri.

AsQueryable(IEnumerable)

Mengonversi menjadi IEnumerableIQueryable.

Berlaku untuk

Lihat juga