とりこらぼ。

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

目次

Blog 利用状況

ニュース

プロフィール

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

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

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

前回までのあらすじ

ユー、BindingList でやっちゃいなよ。

さて、そんな感じで List クラスでのデータバインディングをほっぽりだしていましたが、

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

に戻って、List クラスでバインドをやっちゃう方法を書きます。以前も書きましたが、List クラス単独では難しそうですので、ちょっくら調べてきました。

今回から数回のエントリで使用するクラスは、BindingSource クラスです。MSDNだと、こちら↓

MSDN:BindingSource クラス(http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.bindingsource(VS.80).aspx)

MSDN:BindingSource コンポーネント(http://msdn2.microsoft.com/ja-jp/library/h974h4y2(VS.80).aspx)

とりあえず、大きいクラスです。あ、気持ち的にですけどね。なので、今回はList クラスでバインドをやっちゃう部分だけ書きますね。

今回は見てもらったほうが分かりやすいので先にコードをすべてお見せします。

Imports System
Imports System.Windows.Forms


Public Class Form1

    Private _entertainerList As List(Of WankumaEntertainer)
    Private _entertainersBindingSource As BindingSource

    Public Sub New()
        InitializeComponent()
        Me.components = New System.ComponentModel.Container         Me._entertainersBindingSource = New BindingSource(Me.components)
    End Sub

    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._entertainersBindingSource.DataSource = Me._entertainerList
        Me.ComboBox1.DataSource = Me._entertainersBindingSource         Me.ComboBox1.DisplayMember = "Name"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        Me._entertainersBindingSource.Add(New WankumaEntertainer("とりこびと"))
    End Sub

    Private Sub Button2_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button2.Click
        For Each entertainer As WankumaEntertainer In Me._entertainerList
            If entertainer.Name = "とりこびと" Then
                entertainer.Name = "とりこびと(仮)"
            End If
        Next
        Me._entertainersBindingSource.ResetBindings(False)
    End Sub

End Class

さくっと内容を書きますと、

    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._entertainersBindingSource.DataSource = Me._entertainerList
        Me.ComboBox1.DataSource = Me._entertainersBindingSource         Me.ComboBox1.DisplayMember = "Name"
    End Sub

この部分、見た感じ _entertainerList と ComboBox1 の間に _entertainersBindingSource を挟み込んだ感じになっていますね。

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        Me._entertainersBindingSource.Add(New WankumaEntertainer("とりこびと"))
    End Sub

_entertainerList に直接ではなく、_entertainersBindingSource に追加しています。

    Private Sub Button2_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button2.Click

        For Each entertainer As WankumaEntertainer In Me._entertainerList
            If entertainer.Name = "とりこびと" Then
                entertainer.Name = "とりこびと(仮)"
            End If
        Next
        Me._entertainersBindingSource.ResetBindings(False)
    End Sub

_entertainersBindingSource.ResetBindings メソッドの呼び出しです。これってその6でやった BindingList.ResetBindings と同じ感じっぽいですよね。

ではでは、実行してみてください♪Button1 をクリックして 'とりこびと' を追加し、Button2 をクリックして変更してみてください。でもってその後 ComboBox1 のリストを確認してみてください。


List クラスでもでけたでぇ!


どうやら BindingSource クラスは データとコントロールの仲を取り持ってくれているっぽいですね。データに直接ではなく、BindingSource に追加(Add メソッド)すると、ListChanged イベントを発生させてくれたり、ResetBindings メソッドをもってくれていたりととっても大助かりです。

理由あって IBindingList を実装できないクラスをバインドしたいときなど、このクラスでさくっとできそうですね。

投稿日時 : 2007年5月31日 10:19

Feedback

# データバインディングのおべんきょ。その12。 2007/06/04 16:33 とりこびと ぶろぐ。

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

# Today, I went to the beach front with my kids. I found a sea shell and gave it to my 4 year old daughter and said "You can hear the ocean if you put this to your ear." She placed the shell to her ear and screamed. There was a hermit crab inside 2020/06/22 22:07 Today, I went to the beach front with my kids. I f

Today, I went to the beach front with my kids. I found a sea shell and gave it to my 4 year old daughter and said "You can hear the ocean if you put this to your ear." She
placed the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear.
She never wants to go back! LoL I know this is totally off topic but
I had to tell someone!

# Thanks , I've just been looking for information about this subject for a while and yours is the greatest I've discovered so far. However, what in regards to the conclusion? Are you positive in regards to the supply? 2020/06/29 18:59 Thanks , I've just been looking for information ab

Thanks , I've just been looking for information about this subject for a while
and yours is the greatest I've discovered so far.
However, what in regards to the conclusion? Are you positive in regards
to the supply?

# 偽物ブランド 2020/07/31 7:17 gkezfbht@hotmail.co.jp

芸能人の腕時計.com 両氏は、パイロットのための機能的なタイムピースを作るという明確なコンセプトを当初から持っていた。
ミリタリーとラグジュアリーが見事両立されています。
その後連立政党「自衛」の党首アンジェイ・レッペルの収賄疑惑がカチンスキ首相に伝えられると、首相は政権維持を惜しまず2007年9月7日に議会を解散する。
共産主義政権により、民族を問わずポーランドに居住する住民全てを対象に財産の国有化が行われ、これらドイツ人が残した不動産も国有化された。
摩耗や劣化が激しい部品に関しては、新しい部品へ交換いたします。
交換部品は全てベル&ロスの純正部品を使用いたします。
スイスで生産されるタイムピースは、フランス空軍のパイロットたちに愛用されており、フランス国防軍の他の部隊や警察などでも着用されている。
丸で囲んだアンパサンドの左右に両氏のファミリーネームの一部が配されたロゴは当時より変わっておらず、丸の部分を文字盤に見立てると腕時計を上から見たような印象を与える。
1997年、ジンとの提携が切れ、独立したベル&ロスの処女作となったBR123シリーズ。
だが、この時計はフランクフルトを拠点とする計器時計のスペシャリスト、ジンが製作したものだった。
例年新作を意欲的に発表し、まだまだ躍進を見せそうな話題の新星。
黒文字盤と黒いケース、そして、純白の夜光針とインデックスを備えたベル&ロスの特徴的なベーシックモデルに比べると、ゴールデン ヘリテージはそのエレガントな佇まいがゆえにブランドのイメージに合っていないのではないか、という意見もあるだろう。
ベル&ロスの場合も、文字通り「地に足の着いた」地上の顧客のほうが圧倒的に多いはずである。
装備・物量で劣っていた連合軍は果敢に戦ったが敗北しヘンリク2世は戦死した。
ポーランドは解読器ボンバを開発のうえ、設計図を英仏に提供した。
1339年、ドイツ騎士団に対し、かつてポーランドの領土であったことを理由に一部の土地の返還を求め抗戦した。
また、後には反王権的性格を表す重要な意味合いを持つ「ポーランド王国の王冠」という言葉もこの頃に土地の主権を主張する時の言葉として出始めた。

偽物ブランド https://www.yuku006.com/ProductDetail.aspx?Id=201907081243211046

# I'm gone to tell my little brother, that he should also pay a visit this weblog on regular basis to take updated from latest information. 2020/08/07 3:23 I'm gone to tell my little brother, that he should

I'm gone to tell my little brother, that he should also pay a
visit this weblog on regular basis to take updated from latest information.

# Excellent blog you have here.. It's difficult to find high-quality writing like yours these days. I seriously appreciate people like you! Take care!! 2020/08/14 8:22 Excellent blog you have here.. It's difficult to

Excellent blog you have here.. It's difficult to find
high-quality writing like yours these days. I seriously appreciate people like you!

Take care!!

# This info is worth everyone's attention. When can I find out more? 2020/08/27 13:40 This info is worth everyone's attention. When can

This info is worth everyone's attention. When can I find out more?

# Howdy! This is my 1st comment here so I just wanted to give a quick shout out and say I really enjoy reading through your articles. Can you suggest any other blogs/websites/forums that cover the same subjects? Many thanks! 2020/08/28 18:49 Howdy! This is my 1st comment here so I just wante

Howdy! This is my 1st comment here so I just wanted to give a quick
shout out and say I really enjoy reading through your articles.
Can you suggest any other blogs/websites/forums that cover the same subjects?
Many thanks!

タイトル  
名前  
Url
コメント