... слишком длинный для комментария ... может добавить к этому пример кода, если OP запрашивает ...
Если «WinForms», добавьте тег «WinForms» к своим тегам.
Возможно, вы захотите уточнить: вы ищете здесь решение, которое будет «расширяться», чтобы покрыть случай, когда у вас может быть много элементов управления в UserControl (десятки? сотни?), которые вы повторно используете во многих формах, все из которых нужно синхронизировать:
Если вы (ищете масштабирование), то я думаю, вам нужно будет изучить «DataSource», как предлагает Асад (обратите внимание, что только некоторые элементы управления WinForms [например, ComboBox] имеют свойство «DataSource») и «DataBinding as Jake предлагает; оба этих ответа указывают на необходимость «высокоуровневого» подхода к синхронизации состояния.
Для решения «меньшего масштаба» вы можете рассмотреть возможность добавления файла «Настройки» и использования его в качестве хранилища для текущих значений.
В любом случае вам все равно нужно будет вызывать событие... при каждом изменении в текущем UserControl, имеющем фокус..., чтобы инициировать обновление элементов управления в других экземплярах UserControl.
Или, в зависимости от вашего дизайна и требований, если вы можете согласиться с тем, что каждый UserControl не обновляется немедленно: вы можете отложить запуск обновления до тех пор, пока пользователь не переключится на другую форму: тогда ранее активная форма вызовет свое «событие деактивации»: в этом событии вы может определить, изменились ли настройки (используя какой-то «грязный бит» в UserControl?), а затем обновить другие UserControls по мере необходимости: я предполагаю, что вы действительно хотите немедленного обновления.
Имхо, еще одна хорошая вещь, которую нужно уточнить, чтобы получить наилучшие ответы здесь, может быть: как именно создаются эти несколько форм, каждая из которых содержит экземпляр одного и того же UserControl: существует ли одна «основная форма», которая создает все остальные Экземпляры форм: или это модель «SDI», в которой каждая форма создается независимо. У какой-либо из форм свойство Parent установлено в ненулевое значение (т. е. у какой-либо из форм есть другая форма в качестве родительской)?
Если вам нужен рабочий пример кода использования общедоступного статического класса для «небольшого» решения вашего вопроса «как задано»: просто спросите здесь, и я опубликую один: это не будет «элегантно», но это буду работать :)
person
BillW
schedule
20.02.2010