とりこらぼ。

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

目次

Blog 利用状況

ニュース

プロフィール

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

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

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

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

今回は前回に続き、要素の変更に対して行った変更をコントロールに反映させる方法を一つ書きます。今回もそれほど難しくありません。ListChanged イベントを発生させる方法の一つです。

それって、ずばり!!

INotifyPropertyChanged インターフェイス の実装

です。どっかで見ましたよね?このインターフェイス。そうです、その3でやりましたよね?あ、もちろん BindingList ではなく、その要素に対してです。さっそく実装してみましょう。

Imports System.ComponentModel


Public Class WankumaEntertainer     Implements INotifyPropertyChanged

    Public Event PropertyChanged(ByVal sender As ObjectByVal e As PropertyChangedEventArgs) _     Implements INotifyPropertyChanged.PropertyChanged

    Private _name As String = String.Empty
    Public Property Name() As String         Get             Return _name         End Get         Set(ByVal value As String)             If _name = value Then                 Exit Property             End If             _name = value             Me.NotifyPropertyChanged("Name")         End Set     End Property

    Public Sub New()
    End Sub

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

    Public Sub New()
    End Sub

    Protected Overridable Sub NotifyPropertyChanged(ByVal propertyName As String)
        RaiseEvent PropertyChanged(MeNew PropertyChangedEventArgs(propertyName))
    End Sub

End Class

今回の作業はこれでおしまいです。Form1 には変更はありません。(←前回やった BindingList.ResetBindings メソッドの呼び出しは必要ありません、という意味です。)念のため、以下のコードになります。

Imports System
Imports System.ComponentModel


Public Class Form1

    Private _entertainerList As BindingList(Of WankumaEntertainer)

    Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgs) Handles MyBase.Load
        Me._entertainerList = New BindingList(Of WankumaEntertainer)         Me._entertainerList.RaiseListChangedEvents = True
        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

    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
    End Sub
End Class

とってもラクチンですね。ただ、どうしてこれでOKなのかは書いておきます。

BindingList クラスは要素の型が INotifyPropertyChanged インターフェイス を実装している場合、INotifyPropertyChanged.PropertyChanged イベントをハンドルして ListChanged イベントを発生してくれるようなのです。


とっても便利ね♪


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


でけた!でけたでぇ!どうでっしゃろ!?


というわけで、BindingList とINotifyPropertyChanged インターフェイス の実装の組み合わせという方法で要素の変更に対して行った変更をコントロールに反映させる方法でした。

投稿日時 : 2007年5月30日 21:29

Feedback

# qRjgcnbVjbGeNgh 2011/09/29 6:43 http://oemfinder.com

Khnpmu I was looking for the report in Yandex and suddenly came across this page. I found a little information on my topic of my report. I would like more, and thanks for that..!

# RhSLUzuKfFLK 2011/10/06 0:19 http://www.cpc-software.com/products/Download-Micr

Pleased to read intelligent thoughts in Russian. I`ve been living in England for already 5 years!...

# vfcLKaJoZHP 2011/10/21 22:06 http://www.epotenzmittel.com/

52. "The road will be overcome by that person, who goes." I wish you never stopped and be creative - forever..!

# LSZfwqjSzccVf 2011/11/02 5:27 http://www.pharmaciecambier.com/

52. "The road will be overcome by that person, who goes." I wish you never stopped and be creative - forever..!

# zeNaBsDaWuxo 2011/11/09 6:42 http://www.farmaciaunica.com/

Hello! How do you feel about young composers?!...

# pkszVjkYcJognOy 2011/11/16 2:58 http://circalighting.com/category.aspx?cid=14

Received the letter. I agree to exchange the articles.

# BSzzWzMKSeNwv 2011/11/16 3:38 http://catalinabiosolutions.com

Informative, but not convincing. Something is missing but what I can not understand. But I will say frankly: bright and benevolent thoughts!...

# pvYIcqTmCHByxSjWeoB 2011/11/16 3:59 http://www.laurenslinens.com/coldorbed.html

Hello! Read the pages not for the first day. Yes, the connection speed is not good. How can I subscribe? I would like to read you in the future!...

# rrxepjxmtMQLJhxwd 2014/07/18 17:40 http://crorkz.com/

2Odx9e Wow, great blog post.Thanks Again. Really Great.

# JUKqLfdTYBUnqMtYIO 2014/08/19 11:52 http://youtu.be/vUaF914XFDQ

Hey, thanks for the blog article.Thanks Again. Keep writing.

# re: データバインディングのおべんきょ。その7。 2015/06/04 17:22 hay đay

https://gaigoi2014.net

# re: データバインディングのおべんきょ。その7。 2015/06/05 6:21 I definitely enjoy reading everything that is post

thank so much

# re: データバインディングのおべんきょ。その7。 2015/06/05 6:22 I definitely enjoy reading everything that is post

I definitely enjoy reading everything that is posted on your website.

タイトル  
名前  
Url
コメント