有没有人知道,怎么在Dictionary 或者arraylist的元素变化时就触发某个事件。。有没有方法实现的!?请指教
解决方案 »
- 项目分析与设计
- 查看在线人员代码时,如何取登录人员的session值
- 有谁知道这个软件用什么语言能写出来呀
- 试问windows核心编程
- 编写第一个XNA游戏——摘自国内第一个中文版XNA官方帮助(由中国XNA开发网www.XnaDev.cn译)
- ole db 连接db2问题
- 在查询分析器里,根据标志'-',如何将字符串分解(要循环列出)!!!!(sqlserver2000)
- 未来,我们该学习VC6.0还是.NET2003呢??我实在困惑,大家给点意见好吗??
- 关于绘图的问题!
- 对方提供java接口的示例,我想用C#实现,那位老大能提供下对应C#代码实现以下功能?
- winfrom的thread.sleep()的问题
- 问个调用父类方法的
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.phoneNumberValue)
{
this.phoneNumberValue = value;
NotifyPropertyChanged("PhoneNumber");
}
}
}
}
判断参考
如果你继承这2个类,自己实现Add,Remove,this[index],this[key]的话就没问题了。