とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

データバインディングのおべんきょ。その4。

さて、前回まで単純バインディング(シンプル オブジェクトに対するバインド)についていろいろおべんきょしました。

今回から数回、Form に配置した ComboBox の項目にオブジェクトのリストをバインドする方法をおべんきょしたいと思います。

さて、どんなオブジェクトがリストとしてバインディング可能なのでしょうか?なんとなく、配列とか、コレクションとかがイメージできますが、一般的には IList インターフェイス か IListSource インターフェイスをサポートしていることが必要なようです。(どっかで書きますが、例外もあります。)

MSDN:IList インターフェイス(http://msdn2.microsoft.com/ja-jp/library/system.collections.ilist(VS.80).aspx)

MSDN:IListSource インターフェイス(http://msdn2.microsoft.com/ja-jp/library/system.componentmodel.ilistsource(VS.80).aspx)

先ほどの配列なんかも IList インターフェイスを実装していますね。このエントリでも .NET Framework にある既存の IList インターフェイスを実装したクラスを使用することにします。それってずばり!

List ジェネリック クラスです!(http://msdn2.microsoft.com/ja-jp/library/6sh2ey19(VS.80).aspx)

まんまな名前ですね。ま、なにはともあれやってみましょうか♪

まず、最初に Visual Studio 2005 を使用して Visual Basic で WindowsApplication プロジェクトを作成します。プロジェクト名は「WindowsApplication1」でいいです。するとご存知のとおり、Form1 クラスの作成までやってくれますね。その勝手に出来上がった Form1 に ComboBox を配置しておきます。(ComboBox1 でいいですよ。)

次に、WankumaEntertainer クラスを用意します。

Public Class WankumaEntertainer


    Private _name As String = String.Empty
    Public Property Name() As String         Get             Return _name         End Get         Set(ByVal value As String)             _name = value         End Set     End Property

    Public Sub New()
    End Sub

    Public Sub New(ByVal name As String)
        Me.Name = name
    End Sub

End Class

こんな感じですね。

Form1 クラスには、以下の内容を記述します。

Imports System
Imports System.Collections.Generic


Public Class Form1

    Private _entertainerList As List(Of WankumaEntertainer)

    Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgs) Handles MyBase.Load
        Me._entertainerList = New List(Of WankumaEntertainer)
        Me._entertainerList.Add(New WankumaEntertainer("ぽぴ王子"))         Me._entertainerList.Add(New WankumaEntertainer("アクア"))         Me._entertainerList.Add(New WankumaEntertainer("R・田中一郎"))
        Me.ComboBox1.DataSource = Me._entertainerList         Me.ComboBox1.DisplayMember = "Name"
    End Sub

End Class

Form1_Load メソッド で、_entertainerList に3つのリスト項目を追加し、ComboBox1 のDataSource プロパティに設定します。_entertainerList の項目である WankumaEntertainer クラスの Name プロパティが ComboBox1 の項目として表示されるように DisplayMember プロパティに Name プロパティの名前 'Name' を設定します。

では、さっそく実行してみましょう♪ どうですか?リストの項目に表示されていますよね。


ちょっとこれ、ちょ→すごくない?


いや~、すばらしい!さ、これでリストのデータバインディングのおべんきょはおしまい、めでたしめでたし♪




って、この流れはもしや!!


ええ、そうです。ちょっとこんなの試してみてください。デザイナから Form1 にButton を一つ追加して(Button1 で。)Form1 のコードに以下のように書き加えます。

Imports System
Imports System.Collections.Generic


Public Class Form1

    Private _entertainerList As List(Of WankumaEntertainer)

    Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgs) Handles MyBase.Load
        Me._entertainerList = New List(Of WankumaEntertainer)
        Me._entertainerList.Add(New WankumaEntertainer("ぽぴ王子"))         Me._entertainerList.Add(New WankumaEntertainer("アクア"))         Me._entertainerList.Add(New WankumaEntertainer("R・田中一郎"))
        Me.ComboBox1.DataSource = Me._entertainerList         Me.ComboBox1.DisplayMember = "Name"
    End Sub

    ' 書き加えた部分。     Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        Me._entertainerList.Add(New WankumaEntertainer("とりこびと"))
    End Sub

End Class

Button1 をクリックすると _entertainerList に新しく 'とりこびと' という Name プロパティ に設定された WankumaEntertainer を追加するコードです。

ではでは、実行してみましょう。Button1 をクリックしてから ComboBox1 のリストを確認してみてください。


あ、あ、あれ? 'とりこびと' いないぢゃん!(ToT)


そうです。プログラムコードから_entertainerListに対して行った変更が反映されません。・・・困りましたね。



・・・と、困ったところで次回につ・づ・く♪

投稿日時 : 2007年5月30日 9:22

Feedback

# re: データバインディングのおべんきょ。その4。 2007/05/30 10:47 HiJun

データソース...
レッドスネークカマン!!!って感じですね。
(今日もいい感じで壊れてますが何か?)

# re: データバインディングのおべんきょ。その4。 2007/05/30 13:21 とりこびと

HiJun さん、コメントありがとうございます。

>レッドスネークカマン!!!って感じですね。

素敵な壊れ方ですねwww
楽しんでいただけているようで何よりですw

# データバインディングのおべんきょ。その5。 2007/05/30 14:13 とりこびと ぶろぐ。

データバインディングのおべんきょ。その5。

# データバインディングのおべんきょ。その10。 2007/06/01 14:11 とりこびと ぶろぐ。

データバインディングのおべんきょ。その10。

# wLboJsGXlAmvJJCFQ 2011/12/22 20:30 http://www.discreetpharmacist.com/

H9ZhQQ This article is for professionals..!

# qkxHmBaBCYiwdBvMmsK 2012/01/04 5:44 http://www.kosherbeefjerky.net/

V8VxVR Honestly, not bad news!...

タイトル
名前
Url
コメント