Ребят, помогите плиз с одной хитрой проблемой.
Пишу на WinForms свой layout (скажем, типа Docking). Т.е. у нас есть сам контрол DockingPanel и сателлит DockingLayoutEngine (где есть Layout(), который и делает всю работу).
При добавлении контрола на DockingPanel важно, в какую часть DockingPanel его изначально положили (кликнули).
Т.е. если взяли лэйбл с тулбара и кликнули мышой в правую часть DockingPanel, лэйбл должен "прилипнуть" к правой стороне.
Подводка: после кидания контрола на контейнер, мой DockingLayoutEngine.Layout() вызывается аж 5 раз, причём первые 3 раза координаты дочернего контрола нулевые (но у контрола есть дефолтовые W & H),
а последние 2 вызова — координаты и размер выставлены как положено (по координатам, где я кликнул).
Проблема: внутри Layout() мне нужно обрабатывать дочерний контрол только после того, как у него инициализированы X-Y-W-H!
Но я не знаю, какой из вызовов Layout() "последний", вот в чём беда! Они практически идентичны (смотрел по свойствам контрола и по LayoutEventArgs.AffectedProperty).
Если реагировать в событии самого DockingPanel.OnControlAdded, то событие вызывается слишком рано — практически сразу после первого
вызова Layout().
Не уверен, что вы поняли, но кто своё писал, тот усёк. Попробую другими словами: мы кинули контрол на контейнер и мне надо понять, когда дизайнер
закончил инициализировать контрол и я могу играть с его(контрола) координатами.
Проблема очень специфичная (и наверняка у неё очень простое решение, но из "женской логики MS"), гугл бессильно накидал мне просто фсякой фигни,
где даже близко к этой теме не подходили. Так что вот, прошу форум помочь. Заранее спасибо!
(у меня есть книжки по WinForms, но там тоже такие глубинные вещи не касались)