отслеживать изменения в winform C # - PullRequest
8 голосов
/ 18 января 2010

У меня есть форма, в которой размещается tabcontrol. каждая из этих вкладок имеет множество элементов управления, начиная от текстового поля, комбинированного списка, управления деревом, управления вращением.

В верхней части формы есть текстовое поле.

если есть какие-либо изменения, сделанные с помощью элементов управления форм, скажем, что значение изменилось в выпадающем списке вкладки 1 или элемент был удален из элемента управления дерева, мне нужно показать «*», указывающее, что определенные значения были изменены ,

Как я могу добиться этого эффективным способом? или обрабатывает соотв. контролирует измененное событие - единственный способ узнать, изменился ли элемент или нет?

Ответы [ 3 ]

4 голосов
/ 18 января 2010

Думаю, эта статья о Codeproject может помочь вам, она помогает отслеживать изменения в элементах управления winforms.

Надеюсь, это поможет.

1 голос
/ 18 января 2010

Вы можете попробовать что-то в этом духе, вам нужно будет добавить немного для каждого типа элемента управления в вашей форме. По событию загрузки от вашего сделать addUpdateNotification (это);

    public void addUpdateNotification(Control start)
    {
        foreach (Control c in start.Controls)
        {
            if (c is TextBox)
            {
                var text = c as TextBox;
                text.TextChanged += notifyChanged;
            }

            addUpdateNotification(c);
        }
    }

    public void notifyChanged(Object sender, EventArgs args)
    {
        UpdateTextBox.Text = "*";
    }
1 голос
/ 18 января 2010

Это полностью зависит от базовой архитектуры вашего программного обеспечения. Если он был написан наивно, то да, какая-то грубая сила - это единственный способ, которым вы можете пойти (и это, конечно, просто сделает код намного хуже - вот почему важна хорошая архитектура ).

Если, с другой стороны, программное обеспечение было достаточно хорошо спроектировано, то позади пользовательского интерфейса будут объекты, которые отслеживают состояние пользовательского интерфейса. Эти объекты могут реализовывать что-то вроде INotifyPropertyChanged, и вы можете использовать это с механизмом отображения для обновления пользовательского интерфейса для измененных полей.

Я подозреваю, что вы попали в первую ситуацию, где любые хорошие ответы на вашу проблему были устранены задолго до того, что вы пытаетесь сделать сейчас. Я понял это из вашего заявления о том, что форма «содержит управление вкладками» и что «каждая из этих вкладок имеет [sic] множество элементов управления ...» дизайнеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...