Как изменить метку mdi statusstrip из дочерней формы

Я уже пару дней искал решение, но не могу найти простого ответа. Я пробовал несколько примеров, найденных в Интернете (делегаты, свойства, даже нарушение ООП, делая все общедоступным), но ни один из них, похоже, не работает. Может ли кто-нибудь написать простейший код для следующей проблемы:

У меня есть родительская форма MDI и дочерняя форма. У родительской формы MDI есть метка полосы состояния. У дочерней формы есть кнопка. Все, что я хочу сделать, это обновить метку MDI при нажатии кнопки дочерней формы.

Спасибо!!!


person Alex    schedule 16.04.2011    source источник


Ответы (2)


Это не лучшее решение. Однако самый простой:

1- Измените модификатор доступа метки полосы состояния на общедоступный.

2- Распакуйте родительскую форму до ее реального типа, чтобы иметь доступ к метке:

((ActualMdiParentFormType) this.MdiParent).statusStripLabel.Text = "Value";
person Akram Shahda    schedule 16.04.2011
comment
более чистым решением было бы добавить элемент в родительскую форму, который изменяет метку. текст - person DarkSquirrel42; 16.04.2011
comment
@ DarkSquirrel42: Добавьте свой комментарий в качестве ответа. - person Homam; 16.04.2011
comment
я не получил это в первый раз, когда я прочитал. но теперь я его получил и хочу написать свой ответ ... ((Form1) this.MdiParent) .statusStripLabel.Text = Value; это тот, который я получил. благодаря . - person Erdinç; 12.09.2014

Существует еще одно решение: создать событие в дочернем окне и зарегистрировать родительское окно для этого события. В случае возникновения события родительское окно будет уведомлено, и в соответствующем обработчике событий родительского окна мы сможем обновить НАШ элемент управления.

Это больше похожий на MVVM подход.

Проверьте эти ссылки для получения дополнительной информации:

Передавать значение между формами с помощью событий

http://www.c-sharpcorner.com/uploadfile/yougerthen/mvvm-implementation-for-windows-forms/

MVVM: руководство от начала до конца?

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

person Ramon Araujo    schedule 28.08.2014