久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

WinForm控件復雜數(shù)據(jù)綁定常用數(shù)據(jù)源(如:Dictionary)(對Combobox,DataGridView等控件DataSource賦值的多種方法)

 昵稱5946275 2011-03-03

開始以前,,先認識一下WinForm控件數(shù)據(jù)綁定的兩種形式,簡單數(shù)據(jù)綁定和復雜數(shù)據(jù)綁定,。

1) 簡單數(shù)據(jù)綁定

簡單的數(shù)據(jù)綁定是將用戶控件的某一個屬性綁定至某一個類型實例上的某一屬性,。采用如下形式進行綁定:引用控件.DataBindings.Add("控件屬性", 實例對象, "屬性名", true);

2) 復雜數(shù)據(jù)綁定

復雜的數(shù)據(jù)綁定是將一個以列表為基礎(chǔ)的用戶控件(例如:ComboBoxListBox,、ErrorProvider,、DataGridView等控件)綁定至一個數(shù)據(jù)對象的列表

基本上,,Windows Forms的復雜數(shù)據(jù)綁定允許綁定至支持IList接口的數(shù)據(jù)列表,。此外,,如果想通過一個BindingSource組件進行綁定,還可以綁定至一個支持IEnumerable接口的數(shù)據(jù)列表,。

對于復雜數(shù)據(jù)綁定,,常用的數(shù)據(jù)源類型有(代碼以Combobox作為示例控件):

1IList接口(包括一維數(shù)組,ArrayList等)

示例:

        private void InitialComboboxByList()

        {

            ArrayList list = new ArrayList();

            for (int i = 0; i < 10;i++ )

            {

                list.Add(new DictionaryEntry(i.ToString(), i.ToString() + "_value"));

            }

            this.comboBox1.DisplayMember = "Key";

            this.comboBox1.ValueMember = "Value";

            this.comboBox1.DataSource = list;

        }

2IListSource接口(DataTable,、DataSet等)

        private void InitialComboboxByDataTable()

        {

            DataTable dt=new DataTable();

            DataColumn dc1 = new DataColumn("Name");

            DataColumn dc2 = new DataColumn("Value");

 

            dt.Columns.Add(dc1);

            dt.Columns.Add(dc2);

 

            for (int i = 1; i <=10;i++ )

            {

                DataRow dr = dt.NewRow();

                dr[0] = i;

                dr[1] = i + "--" + "hello";

                dt.Rows.Add(dr);

            }

 

            this.comboBox1.DisplayMember = "Name";

            this.comboBox1.ValueMember = "Value";

            this.comboBox1.DataSource = dt;

        }

3) IBindingList接口(如BindingList類)

4) IBindingListView接口(如BindingSource類)

示例:

        private void InitialComboboxByBindingSource ()

        {

            Dictionary<stringstring> dic = new BindingSource <stringstring>();

            for (int i = 0; i < 10;i++ )

            {

                dic.Add(i.ToString(),i.ToString()+"_hello");

                this.comboBox1.DisplayMember = "Key";

                this.comboBox1.ValueMember = "Value";

                this.comboBox1.DataSource = new BindingSource(dic, null);

            }

        }

注意一下上面的程序,,BindingSourceDataSource屬性值為一個Dictionary類型的實例,如果用dic直接給Combobox賦值的話,,程序會報錯,,因為Dictionary<>并沒有實現(xiàn)IListIListSource接口,但是將Dictionary<>放到BindingSource中便可以實現(xiàn)間接綁定,。關(guān)于BindingSource更詳細的信息請在該網(wǎng)址查看:

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.bindingsource(VS.80).aspx 

    再看下面一個BindingSource的示例:

        private void InitialComboboxByObject()

        {

            this.comboBox1.DisplayMember = "Name";

            this.comboBox1.ValueMember = "Value";

            this.comboBox1.DataSource = new BindingSource(new DictionaryEntry("Test","Test_Value"), null);

        }

     上面代碼中BindingSourceDatasource是一個結(jié)構(gòu)類型DictionaryEntry,,同樣的DictionaryEntry并不能直接賦值給ComboboxDataSource,但通過BindingSource仍然可以間接實現(xiàn),。

    這是因為:

BindingSource可以作為一個強類型的數(shù)據(jù)源,。其數(shù)據(jù)源的類型通過以下機制之一固定:

·             使用 Add 方法可將某項添加到 BindingSource 組件中。

·              DataSource 屬性設(shè)置為一個列表,、單個對象類型,。(這三者并不一定要實現(xiàn)IListIListSource

這兩種機制都創(chuàng)建一個強類型列表。BindingSource 支持由其 DataSource  DataMember 屬性指示的簡單數(shù)據(jù)綁定和復雜數(shù)據(jù)綁定,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多