События изменения данных в PropertyGrid
От: zmeysss  
Дата: 04.12.07 08:51
Оценка:
Подскажите пожалуйста как получить от PropertyGrid уведомление о редактировании выделенного в нем объекта.
Например (см. код ниже):
в PropertyGrid выбирается объект типа Modules в котором есть два свойства
int intProp — никаких проблем не вызывает и его изменения отслеживаются через PropertyValueChanged
а вот List<Module> modules как раз и вызывает трудности

Собственно вопрос в том, как отследить редактирование свойства modules и его членов (элементов коллекции).
Есть такие идеи:

Ну вобщем, подскажите пожалуйста какой нибудь мудрый полууниверсальный способ. Я почему-то уверен, что PropertyGrid все это позволяет.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        initEditor();
    }

    Modules modules;
    private void initEditor()
    {
        modules = new Modules();
        propertyGridModules.SelectedObject = modules;
    }

    private void propertyGridModules_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
    {
        MessageBox.Show("PropertyValueChanged");
    }
}

class Modules
{
    private List<Module> m_modules = new List<Module>();
    public List<Module> modules
    {
        get { return m_modules; }
        set { m_modules = value; }
    }

    private int m_intProp;
    public int intProp
    {
        get { return m_intProp; }
        set { m_intProp = value; }
    }

}

class Module
{
    private int m_index;
    public int index
    {
        get { return m_index; }
        set { m_index = value; }
    }

    private Rectangle m_position;
    public Rectangle position
    {
        get { return m_position; }
        set { m_position = value; }
    }
}




04.12.07 14:32: Перенесено модератором из '.NET' — AndrewVK
Re: События изменения данных в PropertyGrid
От: zmeysss  
Дата: 05.12.07 10:27
Оценка:
И, что все действительно на столько сложно, что никто не знает?
Re[2]: События изменения данных в PropertyGrid
От: Warr  
Дата: 05.12.07 12:57
Оценка:
Здравствуйте, zmeysss, Вы писали:

Z>И, что все действительно на столько сложно, что никто не знает?


На самом деле не сложно, но универсального подхода нет.

Чтобы такое наваять необходимо чтобы сам класс

List<Module>

такую вещь поддерживал, т.е. в лучшем случае тебе необходимо наследоваться от

class SomeList:List<Module>

и писать свои обработчки изменений, возможно хватит и достойно написанного метода Equal в SomeList
(будет срабатывать PropertyValueChanged)
в нем и нужно будет проводить анализ изменений вложенных Module.
Re[3]: События изменения данных в PropertyGrid
От: zmeysss  
Дата: 05.12.07 20:46
Оценка:
Спасибо, Warr, буду пробовать, по вашей схеме.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.