Я провел некоторое исследование и даже воспроизвел проблему, однако найденное мной решение не поможет вам, но я надеюсь, что информация может помочь другому человеку помочь вам.
Здесь идет
Проблему легко воспроизвести, создав новый проект формы Windows, добавив в форму сетку свойств и список и установив список в качестве выбранного объекта сетки свойств.
//designer code excluded
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
propertyGrid1.SelectedObject = listBox1;
propertyGrid1.PropertyValueChanged += delegate(object s, PropertyValueChangedEventArgs args)
{
MessageBox.Show("Invalidate Me!");
};
}
}
При редактировании коллекции элементов списка, событие никогда не срабатывает, причина в том, что свойство Items возвращает ссылку на коллекцию. Поскольку добавление элементов в коллекцию на самом деле не меняет ссылку, когда свойство никогда не изменяется, таким образом, сетка свойств.
Решение, которое я попробовал, состояло бы в том, чтобы расширить сетку свойств и обновить логику, которая сравнивает их и проверяет, изменились ли данные в коллекции, и вызвать событие. Я пробовал это, но у PropertyGrid был внутренний класс PropertyGridView, который вызывал проблемы для меня.
Надеюсь, это поможет кому-то еще выяснить вашу проблему.
-jeremy