这段代码有什么问题?点击button1不能弹出messageBox。
public partial class Form1 : Form
{
public ObservableCollection<string> aCollection2 = new ObservableCollection<string>();
myClass mc = new myClass();
public Form1()
{
InitializeComponent();
aCollection2.Add("a");
aCollection2.Add("b");
}
private void button1_Click(object sender, EventArgs e)
{
mc.myCollection = aCollection2;
}
private void button2_Click(object sender, EventArgs e)
{
mc.myCollection.Clear();
}
}
有了定义的 myClass:
class myClass
{
public ObservableCollection<string> myCollection = new ObservableCollection<string>();
public myClass()
{
myCollection.CollectionChanged += Changed;
}
void Changed(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
MessageBox.Show(myCollection.Count.ToString());
}
}
编辑: 当我添加第三个按钮时,使用以下代码:
private void button3_Click(object sender, EventArgs e)
{
mc.myCollection.Add("a");
}
它确实显示了messageBox。button2也是如此。但在点击button1后 - 就再也没有响应了。为什么呢?
ObservableCollection
时触发,而不是在您替换它之后触发。 - SLaks