INotifyPropertyChangedとは? わかりやすく解説

INotifyPropertyChanged イベント


パブリック イベントパブリック イベント

  名前 説明
パブリック イベント PropertyChanged プロパティ値が変更されたときに発生します
参照参照

関連項目

INotifyPropertyChanged インターフェイス
System.ComponentModel 名前空間

INotifyPropertyChanged インターフェイス

メモ : このインターフェイスは、.NET Framework version 2.0新しく追加されたものです。

プロパティ値が変更されたことをクライアント通知します

名前空間: System.ComponentModel
アセンブリ: System (system.dll 内)
構文構文

Public Interface INotifyPropertyChanged
Dim instance As INotifyPropertyChanged
public interface INotifyPropertyChanged
public interface class INotifyPropertyChanged
public interface INotifyPropertyChanged
public interface INotifyPropertyChanged
解説解説
使用例使用例

INotifyPropertyChanged インターフェイス実装する方法次のコード例示します。この例を実行すると、バインディングリセット要求しなくても、バインドされた DataGridView コントロールデータ ソース変更反映されることがわかります

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Data.Common
Imports System.Diagnostics
Imports System.Drawing
Imports System.Data.SqlClient
Imports System.Windows.Forms

' This form demonstrates using a BindingSource to bind
' a list to a DataGridView control. The list does not
' raise change notifications, however the DemoCustomer type 
' in the list does.

Public Class Form1
    Inherits System.Windows.Forms.Form
    ' This button causes the value of a list element to be changed.
    Private changeItemBtn As New
 Button()
    
    ' This is the DataGridView control that displays the contents 
    ' of the list.
    Private customersDataGridView As New
 DataGridView()
    
    ' This is the BindingSource used to bind the list to the 
    ' DataGridView control.
    Private customersBindingSource As New
 BindingSource()
    
    Public Sub New() 
        ' Set up the "Change Item" button.
        Me.changeItemBtn.Text = "Change Item"
        Me.changeItemBtn.Dock = DockStyle.Bottom
        AddHandler Me.changeItemBtn.Click,
 AddressOf changeItemBtn_Click
        Me.Controls.Add(Me.changeItemBtn)
        
        ' Set up the DataGridView.
        customersDataGridView.Dock = DockStyle.Top
        Me.Controls.Add(customersDataGridView)
        Me.Size = New Size(800, 200)
        AddHandler Me.Load, AddressOf
 Form1_Load
    
    End Sub 'New
    
    Private Sub Form1_Load(ByVal
 sender As System.Object, _
        ByVal e As System.EventArgs) Handles
 Me.Load

        ' Create and populate the list of DemoCustomer objects
        ' which will supply data to the DataGridView.
        Dim customerList As New
 List(Of DemoCustomer)

        customerList.Add(DemoCustomer.CreateNewCustomer())
        customerList.Add(DemoCustomer.CreateNewCustomer())
        customerList.Add(DemoCustomer.CreateNewCustomer())

        ' Bind the list to the BindingSource.
        Me.customersBindingSource.DataSource = customerList

        ' Attach the BindingSource to the DataGridView.
        Me.customersDataGridView.DataSource = Me.customersBindingSource

    End Sub 'Form1_Load
    
    ' This event handler changes the value of the CompanyName
    ' property for the first item in the list.
    Private Sub changeItemBtn_Click(ByVal
 sender As Object, ByVal
 e As EventArgs) 
        ' Get a reference to the list from the BindingSource.
        Dim customerList As List(Of
 DemoCustomer) = _
            CType(customersBindingSource.DataSource, List(Of DemoCustomer))
        
        ' Change the value of the CompanyName property for the 
        ' first item in the list.
        customerList(0).CompanyName = "Tailspin Toys"
    
    End Sub
     
    
    
    <STAThread()>  _
    Shared Sub Main() 
        Application.EnableVisualStyles()
        Application.Run(New Form1())
    
    End Sub
End Class

' This class implements a simple customer type 
' that implements the IPropertyChange interface.

Public Class DemoCustomer
    Implements INotifyPropertyChanged
    ' These fields hold the values for the public properties.
    Private idValue As Guid = Guid.NewGuid()
    Private customerName As String
 = String.Empty
    Private companyNameValue As String
 = String.Empty
    Private phoneNumberValue As String
 = String.Empty
    
    Public Event PropertyChanged As
 PropertyChangedEventHandler _
        Implements INotifyPropertyChanged.PropertyChanged
    
    
    Private Sub NotifyPropertyChanged(ByVal
 info As String) 
        RaiseEvent PropertyChanged(Me, New
 PropertyChangedEventArgs(info))
    End Sub

    ' The constructor is private to enforce the factory pattern.
    Private Sub New() 
        customerName = "no data"
        companyNameValue = "no data"
        phoneNumberValue = "no data"
    
    End Sub
    
    
    ' This is the public factory method.
    Public Shared Function
 CreateNewCustomer() As DemoCustomer 
        Return New DemoCustomer()
    
    End Function
    
    ' This property represents an ID, suitable
    ' for use as a primary key in a database.
    Public ReadOnly Property
 ID() As Guid
        Get
            Return Me.idValue
        End Get
    End Property
    
    
    Public Property CompanyName() As
 String 
        Get
            Return Me.companyNameValue
        End Get
        
        Set(ByVal value As
 String)
            If Not (value = companyNameValue)
 Then
                Me.companyNameValue = value
                NotifyPropertyChanged("CompanyName")
            End If
        End Set
    End Property
    
    
    Public Property PhoneNumber() As
 String 
        Get
            Return Me.phoneNumberValue
        End Get
        
        Set(ByVal value As
 String)
            If Not (value = phoneNumberValue)
 Then
                Me.phoneNumberValue = value
                NotifyPropertyChanged("PhoneNumber")
            End If

        End Set
    End Property
End Class
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Diagnostics;
using System.Drawing;
using System.Data.SqlClient;
using System.Windows.Forms;

// This form demonstrates using a BindingSource to bind
// a list to a DataGridView control. The list does not
// raise change notifications, however the DemoCustomer type 
// in the list does.
public class Form1 : System.Windows.Forms.Form
{
    // This button causes the value of a list element to be changed.
    private Button changeItemBtn = new Button();

    // This is the DataGridView control that displays the contents 
    // of the list.
    private DataGridView customersDataGridView = new
 DataGridView();

    // This is the BindingSource used to bind the list to the 
    // DataGridView control.
    private BindingSource customersBindingSource = new
 BindingSource();

    public Form1()
    {
        // Set up the "Change Item" button.
        this.changeItemBtn.Text = "Change Item";
        this.changeItemBtn.Dock = DockStyle.Bottom;
        this.changeItemBtn.Click +=
            new EventHandler(changeItemBtn_Click);
        this.Controls.Add(this.changeItemBtn);

        // Set up the DataGridView.
        customersDataGridView.Dock = DockStyle.Top;
        this.Controls.Add(customersDataGridView);
        this.Size = new Size(800, 200);
        this.Load += new EventHandler(Form1_Load);
    }

    private void Form1_Load(System.Object sender,
 System.EventArgs e)
    {
        // Create and populate the list of DemoCustomer objects
        // which will supply data to the DataGridView.
        List<DemoCustomer> customerList = new List<DemoCustomer>();
        customerList.Add(DemoCustomer.CreateNewCustomer());
        customerList.Add(DemoCustomer.CreateNewCustomer());
        customerList.Add(DemoCustomer.CreateNewCustomer());

        // Bind the list to the BindingSource.
        this.customersBindingSource.DataSource = customerList;

        // Attach the BindingSource to the DataGridView.
        this.customersDataGridView.DataSource =
            this.customersBindingSource;
    }

    // This event handler changes the value of the CompanyName
    // property for the first item in the list.
    void changeItemBtn_Click(object sender, EventArgs e)
    {
        // Get a reference to the list from the BindingSource.
        List<DemoCustomer> customerList =
            this.customersBindingSource.DataSource as List<DemoCustomer>;

        // Change the value of the CompanyName property for the 
        // first item in the list.
        customerList[0].CompanyName = "Tailspin Toys";

    }

    

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}

// This class implements a simple customer type 
// that implements the IPropertyChange interface.
public class DemoCustomer : INotifyPropertyChanged
{
    // These fields hold the values for the public properties.
    private Guid idValue = Guid.NewGuid();
    private string customerName = String.Empty;
    private string companyNameValue = String.Empty;
    private string phoneNumberValue = String.Empty;

    public event PropertyChangedEventHandler PropertyChanged;
    
    private void NotifyPropertyChanged(String
 info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    // The constructor is private to enforce the factory pattern.
    private DemoCustomer()
    {
        customerName = "no data";
        companyNameValue = "no data";
        phoneNumberValue = "no data";
    }

    // This is the public factory method.
    public static DemoCustomer CreateNewCustomer()
    {
        return new DemoCustomer();
    }

    // This property represents an ID, suitable
    // for use as a primary key in a database.
    public Guid ID
    {
        get
        {
            return this.idValue;
        }
    }

    public string CompanyName
    {
        get
        {
            return this.companyNameValue;
        }

        set
        {
            if (value != this.companyNameValue)
            {
                this.companyNameValue = value;
                NotifyPropertyChanged("CompanyName");
            }
        }
    }

    public string PhoneNumber
    {
        get
        {
            return this.phoneNumberValue;
        }

        set
        {
            if (value != this.companyNameValue)
            {
                this.phoneNumberValue = value;
                NotifyPropertyChanged("PhoneNumber");
            }
        }
    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

INotifyPropertyChanged メンバ

プロパティ値が変更されたことをクライアント通知します

INotifyPropertyChanged データ型公開されるメンバを以下の表に示します


パブリック イベントパブリック イベント
  名前 説明
パブリック イベント PropertyChanged プロパティ値が変更されたときに発生します
参照参照

関連項目

INotifyPropertyChanged インターフェイス
System.ComponentModel 名前空間


このページでは「.NET Framework クラス ライブラリ リファレンス」からINotifyPropertyChangedを検索した結果を表示しています。
Weblioに収録されているすべての辞書からINotifyPropertyChangedを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からINotifyPropertyChangedを検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「INotifyPropertyChanged」の関連用語

INotifyPropertyChangedのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



INotifyPropertyChangedのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS