朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら 
.Net BindingListクラスをDataSourceに利用する





リストボックスにデータを表示する時にListクラスを利用することが多いと思いますが、BindingListクラスのほうが便利です。
このBindingListクラスはプログラムから動的に項目を追加するとリストボックスにすぐに反映されます。
Listクラスを使っていても大丈夫です。
BindingListクラスのコンストラクタの引数にListクラスを渡すと変換されます。
VB.NETで利用する時はImports System.ComponentModelを忘れずに。


C#

    public partial class Form1 : Form
    {
        //よく使われるListのジェネリック版
        List<string> list1 = new List<string>();
        //今回紹介したいBindingListクラス
        BindingList<string> list2 = new BindingList<string>();
        public Form1()
        {
            InitializeComponent();
        }
        //初期状態の設定
        private void Form1_Load(object sender, EventArgs e)
        {
            //Listクラスの初期値設定
            this.list1.Add("Tokyo");
            this.list1.Add("Osaka");
            this.list1.Add("Fukuoka");
            //BindingListクラスの初期値設定
            this.list2.Add("Tokyo");
            this.list2.Add("Osaka");
            this.list2.Add("Fukuoka");
            //listBox1はListクラス
            this.listBox1.DataSource = list1;
            //listBox2はBindingListクラス
            this.listBox2.DataSource = list2;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //こちらのボタンはListクラスにデータを追加するが
            //listBox1には追加分が表示されない。
            this.list1.Add("Nagoya");
            this.list1.Add("Sapporo");
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //こちらのボタンはBindingListクラスにデータを追加すると
            //listBox2に追加分が表示される。
            this.list2.Add("Nagoya");
            this.list2.Add("Sapporo");
        }
        private void button3_Click(object sender, EventArgs e)
        {
            //ListクラスからBindingListクラスを作る。
            BindingList<string> bl = new BindingList<string>(this.list1);
            this.listBox1.DataSource = bl;
        }
    }

VB.NET

Imports System.ComponentModel
Public Class Form1
    'よく使われるListのジェネリック版
    Private list1 As List(Of String) = New List(Of String)
    '今回紹介したいBindingListクラス
    Private list2 As BindingList(Of String) = New BindingList(Of String)
    '初期状態の設定
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'Listクラスの初期値設定
        Me.list1.Add("Tokyo")
        Me.list1.Add("Osaka")
        Me.list1.Add("Fukuoka")
        'BindingListクラスの初期値設定
        Me.list2.Add("Tokyo")
        Me.list2.Add("Osaka")
        Me.list2.Add("Fukuoka")
        'listBox1はListクラス
        Me.ListBox1.DataSource = list1
        'listBox2はBindingListクラス
        Me.ListBox2.DataSource = list2
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'こちらのボタンはListクラスにデータを追加するが
        'listBox1には追加分が表示されない。
        Me.list1.Add("Nagoya")
        Me.list1.Add("Sapporo")
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        'こちらのボタンはBindingListクラスにデータを追加すると
        'listBox2に追加分が表示される。
        Me.list2.Add("Nagoya")
        Me.list2.Add("Sapporo")
    End Sub
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        'ListクラスからBindingListクラスを作る。
        Dim bl As BindingList(Of String) = New BindingList(Of String)(Me.list1)
        Me.listBox1.DataSource = bl
    End Sub
End Class








良いやや良い普通やや悪い悪い

投稿日時評価コメント