2016-04-09 3 views
0

У меня есть приложение для окон, которое использует ряд ярлыков для отображения настроек конфигурации приложения. Из этой формы я открою следующую форму, которая является редактором конфигурации, который использует сетку свойств. Скрыть родительский, Показать дочерний элемент, Изменить конфигурацию, Сохранить, закрыть дочерний элемент, показать родительский элемент, обновить родительский элемент, не перезагружая конфигурацию.Обновить конфигурацию в форме show

Я взломал что-то вместе, где я создаю новую форму, но я знаю, что это плохая практика и оставляет невидимый висевший процесс.

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

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

Спасибо! ~ D

+0

Запуск события при сохранении настроек. Когда родительская форма получает событие, обновите метки. Или, однако, вы указали настройки в родительской форме в первом экземпляре, повторите это, чтобы обновить метки. Если вы присвоите новое значение Label.Text, это обновит эту метку. –

+0

Trierd что-то вроде этого прошлой ночью, кроме мероприятия, предназначенного для перезагрузки всей формы. Значит, эти ярлыки нужно переустановить, а потом я возьму его? Их около тридцати, и они установлены на MainForm_onload (там ничего не происходит), и поэтому я надеялся просто перезапустить эту проверку? –

+0

Просто введите метод, который устанавливает все метки, а затем, когда вы получаете событие, вы можете просто вызвать этот метод один раз, чтобы обновить метки. –

ответ

0

Проблема может заключаться в том, как вы анализируете данные из app.config на этикетках. Я думаю, вы используете ConfigurationManager, поэтому, возможно, все, что вам нужно сделать, это снова прочитать так же, как вы делали в первый раз.

+0

Все они читаются в MainForm_onload, поэтому я либо хочу иметь возможность повторно запускать это, либо, альтернативно, что-то вроде ConfigurationManager.RefreshSection («appSettings»); –

+0

Но мы попробовали RefreshSection прошлой ночью, он не играл в мяч (если форма.Refresh недостаточно, чтобы забрать изменения, и мне нужно обновить этикетки отдельно?) –

+0

Когда вы закрываете вторую форму, после того, как изменения будут сохранены на Файл app.config, прочитайте снова. Вызывайте те же самые вещи, которые вы вызываете при загрузке основной формы, извлекаете их в отдельный метод (или класс) и вызываете из другого окна. – Ralph

0

Можете ли вы передать параметры дочерней форме. Если да, передайте вашему ребенку делегат func<T,TResult>(). Когда он сэкономит, вызовите функцию, и в вашем родителе реализуйте ее, чтобы обновить переменные.

Вы также можете отправить новые значения в результате, чтобы вам не нужно было снова их просматривать.

+0

Я думаю, что для работы потребуется переписать, я использую сторонний конфигурационный редактор (дочерняя форма) и его предназначение для запуска как автономное, вы просто вызываете его из события click –

Смежные вопросы