![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
основная форма открывает вторую в модальном режиме.
есть идеи как можно синхронизировать под второй основную, делая Resize и Move на второй? т.е. фактически скрыть существование основной пока не выйдут из второй. -------------------- "Тонкая, однако, работа." |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: нет Всего: 172 |
Спрячь первую, т.е минимизируй и все.
-------------------- |
|||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
в принципе, именно то что надо.
минимизирую, убираю с таскбара а при выходе из второй делаю обратное с первой. только теперь налицо видимая задержка между исчезновением первой и появлением второй и обратно и сразу заметна подмена. но тут уже ничего не поделаешь. посмотрю как скоро это начнет раздражать. -------------------- "Тонкая, однако, работа." |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
А какая задача при этом решается ? Зачем две формы ?
Может, достаточно сделать 2 юзер контрола, положить их на одну форму, и переключаться между ними с пом. свойства Visible ? -------------------- ![]() |
|||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
я так и сделал вначале. но поскольку каждая из форм решает настолько разные задачи что каждая должна иметь свое полноценное меню, тоолбар и т.п., т.е. почти ничего общего кроме стиля. и мне пришлось делать merge всего этого а потом копаться в логике. плюс ко всему у меня на обоих формах dockable окна и когда я их делал видимыми и невидимыми, то они выстраивались в нужном порядке так неохотно медленно и заметно, что выглядело уж очень непрофессионально. причем я консультировался с компанией-поставщиком, что здесь можно сделать, они ничего не смогли предложить на тот момент и даже не поставили эту задачу себе в wish list. SuspendLayout и все прочее не проходило. поэтому я решил все это простым способом, причем пока вторая открыта, первая форма не может понадобится, и я подумал, чем модальное плохо? и подмена небыла заметна, но появился тот побочный эффект с синхронизированием размеров форм. я уж думал писать какой-то менеджер по их синхронизации.
-------------------- "Тонкая, однако, работа." |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Вот решение этой задачи:
Form1 - содержит кнопку, по которой открывается модальная форма Form2:
Form2 - произвольная форма. FormSynchronizer.cs - содержит методы Start и Stop, соответственно стартующий и останавливающий отдельный поток, который реагирует на события SizeChanged и LocationChanged от модальной формы, и передвигает/ресайзит форму Form1 в её "родном" потоке (с пом. Form.Invoke):
-------------------- ![]() |
||||
|
|||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
очень даже неплохо.
но если в первой форме установлено FormWindowState.Maximized (а они обе изначально Maximized), то это почему-то не работает. если я явно поменяю состояние первой на Normal перед стартом синхронайзера, тогда срабатывает, но тогда опять заметна видимая перерисовка при открытии второй, особенно при первом вызове.
правда еще побочный эффект в этом случае, не пойму в чем причина. если я минимизирую вторую ( и затем возвращаю в исходное состояние и пр.), то потом при выходе из нее сбивается расположение dockable windows в первой. но во всех других случаях всевозможных манипуляций со второй ( кроме ее минимизации ) такого не происходит. -------------------- "Тонкая, однако, работа." |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Первое "лечится" добавлением в SyncForms одной строчки:
Насчёт второго не знаю, видимо стыковочные окна отдельно обрабатывают минимизацию окна, сохраняя предыдущие размеры до минимизации. З.Ы. заметил такую вещь: если открыть форму с пом. ShowDialog, то минимизация модальной формы приводит к тому, что её DialogResult становится равным Cancel, что закрывает форму. -------------------- ![]() |
|||
|
||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 4 Всего: 13 |
если исходить из логики мелких, что любая невидимая форма есть форма закрытая, и добавить нижеследующее, то можно совсем не удивиться, если все заработает примерно так как надо
наверно у них много женщин работает. -------------------- "Тонкая, однако, работа." |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
-------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |