имеем форму, на которой TabControl (2 закладки) и сплиттер. Хочется сохранять состояние формы между запусками программы (чтоб при следующем запуске она была в том же месте экрана, где её оставили в предыдущем, открыта та же закладка, и сплит в том же положении).
Делаем стандартно — typed dataset DS, в нём таблица — Form:
Left
Top
Width
Height
SplitHeight
TabNum
байндим всё это к соответствующим свойствам формы и контролов на ней (SplitHeight, в частности, к высоте верхнего из контролов, на которые действует сплиттер) — что-то через дизайнер, что-то (например, Left, Тop, Width, Height) — вручную, в конструкторе формы:
DataBindings.Add( "Width", ds, "Form1.Width" );
При запуске программы читаем датасет из файла, при выходе — записываем его туда (предварительно вызвав DataBindings[ 0 ].BindingManagerBase.EndCurrentEdit у формы, чтоб изменения её состояния перенеслись в датасет).
1) Пока файл есть, всё работает правильно (т.е. меняем положение формы, и изменения значения соответствующих свойств автоматически попадают в датасет). Однако, предположим, что файла нет, и наша задача — создать его, притом, сохранив туда ровно то состояние формы, в котором она открывается сама (т.е. как было спроектировано в дизайнере).
2) Я пытаюсь сделать следующим образом — если файла состояния нет, заводим новый пустой типизированный датасет ds, и в таблицу Form добавляю новую пустую строку. Идея в том, чтобы после этого "форсировать" байндинг данных из формы — т.е. чтоб значения Width, Height, и т.п. перенеслись в датасет (как это происходит в п.1), когда мы ресайзим форму).
Как я понял, у BindingManagerBase есть защищённые методы, которые используются средой .NET для связи датасорса со свойствами — PullData() и PushData().
Вызов PullData, по всей видимости, решил бы мои проблемы — я бы таким образом вынудил перенести требуемые свойства формы в датасет.
Может, их как-то можно вызвать — например, подменив стандартное свойство BindingManagerBase формы собственным BindingManager`ом?
Или есть другие варианты?
Re: Как "форсировать" DataBinding свойств формы и датасета
Re[3]: Как "форсировать" DataBinding свойств формы и датасет
От:
Аноним
Дата:
27.04.06 14:54
Оценка:
Здравствуйте, FLUID, Вы писали:
FLU>...защищенного метода PullData()
Спасибо, думал над этим вариантом — а чего-нить более изящного нет? Мож, какой-то стандартный механизм предусмотрен — а то это несколько "с чёрного хода".