[IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: neo-xil  
Дата: 20.01.10 07:32
Оценка:
Добрый день.

Непонятный глюк с окнами MDI.
Путь воспроизведения:
1. Создать приложение MDI
2. Открыть окно в приложении, максимизировать его. Кнопки окна MDI [_][O][X] — на месте.

3. Открыть еще одно окно(поскольку уже открытое окно максимизировано, то и новое тоже будет максимизировано). По факту открытия окна нужно модифицировать меню (только не слиянием с меню окна MDI) — добавить удалить пункт меню, не обязательно верхнего уровня. Кнопки окна MDI [_][O][X] — исчезли.

Если теперь изменить размер главного окна — кнопки нарисуются.

Что я только не делал. Помогает, например, скрыть-показать строку меню или минимизировать окно MDI/максимизировать его — но дико мерцает же.
Меню — MenuStrip. Зависимости от того само, по себе это меню или лежит в ToolStripPanel, никакой. Проявляется и там и там — просто по факту модифиации меню.

В силу определенных причин, уйти от модификации меню при открытии окна — не могу.

Как бороться? Полгода этот глюк мусолю — избавится не могу.

Предвосхищаю вопросы:
1. используется .net 3.5sp1, на 2.0 — проблемы те-же
2. Krypton Toolkit. Но и без него — всё точно так же.
.net gui forms mdi [_][o][x]
Re: [IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: Аноним  
Дата: 20.01.10 08:13
Оценка:
Здравствуйте, neo-xil, Вы писали:

NX>Как бороться? Полгода этот глюк мусолю — избавится не могу.

есть минимально-воспроизводимый пример?
Re: [IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: neo-xil  
Дата: 21.01.10 06:35
Оценка:
Здравствуйте, neo-xil, Вы писали:

NX>Как бороться? Полгода этот глюк мусолю — избавится не могу.


NX>Предвосхищаю вопросы:

NX>1. используется .net 3.5sp1, на 2.0 — проблемы те-же
NX>2. Krypton Toolkit. Но и без него — всё точно так же.

Не смог воспроизвести в минимальном примере проблему. В минимальном примере работает, а в моем приложении — нет.
Загадка
Re[2]: [IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: Кэр  
Дата: 26.01.10 00:01
Оценка:
Здравствуйте, neo-xil, Вы писали:

NX>Не смог воспроизвести в минимальном примере проблему. В минимальном примере работает, а в моем приложении — нет.

NX>Загадка

NX>>Как бороться? Полгода этот глюк мусолю — избавится не могу.


Полгода это как-то многовато Как насчет того, чтобы отрезать в вашем коде все что связано с отображением этих кнопок или даже вообще кастомизацией окон в приложении — сделать как раз минимальный пример. Убедиться, что с кнопками все хорошо. Потом постепенно добавлять ваш код и смотреть, когда все станет плохо. Довольно стандартный способ диагности — собственно он и называется "хакинг"
Re[3]: [IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: Аноним  
Дата: 27.01.10 13:23
Оценка:
Здравствуйте, Кэр, Вы писали:

Кэр>Здравствуйте, neo-xil, Вы писали:


NX>>Не смог воспроизвести в минимальном примере проблему. В минимальном примере работает, а в моем приложении — нет.

NX>>Загадка

NX>>>Как бороться? Полгода этот глюк мусолю — избавится не могу.


Кэр>Полгода это как-то многовато Как насчет того, чтобы отрезать в вашем коде все что связано с отображением этих кнопок или даже вообще кастомизацией окон в приложении — сделать как раз минимальный пример. Убедиться, что с кнопками все хорошо. Потом постепенно добавлять ваш код и смотреть, когда все станет плохо. Довольно стандартный способ диагности — собственно он и называется "хакинг"


Нестандартное отображение добавил я относительно недавно. Как раз думал, что если нестандартно кнопки эти отрисовывает, то и мои нормально перерисует. Ан нет.

Вкратце, структура воздействия на меню такова: при открытии нового окна меняется "состав действующих объектов". И по этому составу меняется и состав меню согласно ассоциированных этим объектам "действий". Алгоритм там рекурсивный, для понимания тяжелый (т.к. ряд "действий" еще и порождающие — т.е. генерируют вложенные "действия"). И всё работало.

Но вот только разработку я тогда вел на классической теме виндовс, а потом решил посмотреть на "красоты" приложения на клиентских машинах. И вот с того момента — полгода прошло. И воспроизвести случай — сложно.

Но проблему я уже обошел — окно при распахивании просто изменяет размер до размеров MDIClient.ClientSize
Вот это и называется "костылинг".
Re[4]: [IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: neo-xil  
Дата: 27.01.10 13:52
Оценка:
Это был я. Видать огнелис при обновлении куки местами посбрасывал
Re: [IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: vl690001x Россия  
Дата: 05.08.11 14:09
Оценка:
Здравствуйте, neo-xil, Вы писали:

NX>Добрый день.


NX>Непонятный глюк с окнами MDI.



NX>Предвосхищаю вопросы:

NX>1. используется .net 3.5sp1, на 2.0 — проблемы те-же
NX>2. Krypton Toolkit. Но и без него — всё точно так же.

Столкнулся с такой же проблемой, но уже решил)))

Не стал вдаваться в подробности, но думаю это из-за криптона.

В общем, решение проблемы слямзил отсюда: http://www.componentfactory.com/blog/page/2/

Я сделал просто — создал новый code_file.cs, в котором создал 2 класса наследника (как показано по приведенной мне ссылке). Этого оказалось достаточно, во всех используемых компонентах krypton.toolkit даже не пришлось замещать метод OnSizeChanged(), а только в двух:

namespace Calc2
{
public class KryptonFormDelay : KryptonForm
{
protected override void OnSizeChanged(EventArgs e)
{
if (Handle != null)
BeginInvoke((MethodInvoker)delegate
{ base.OnSizeChanged(e); });
}
}

public class KryptonSplitContainerDelay : KryptonSplitContainer
{
protected override void OnSizeChanged(EventArgs e)
{
if (Handle != null)
BeginInvoke((MethodInvoker)delegate
{ base.OnSizeChanged(e); });
}
}

}

И проблема исчезла, правда стало заметно притормаживать (сильнее чем раньше), зато нормально щас перерисовывается, без глюков, а также максимизируется/минимизируется.
Кстати, как я понял, это только на Win7 64 такая проблема. У меня именно такая система.
Re[2]: [IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: vl690001x Россия  
Дата: 05.08.11 14:13
Оценка:
Здравствуйте, vl690001x, Вы писали:

Забыл сказать, конечно же, еще пришлось везде в дизайнере и в коде изменить имя компонентов на этих имя унаследованных от них компонентов с замещенным методом.
krypton toolkit crash глюк mdi виснет
Re: [IMGs-61kb] Кнопки [_][O][X] окна в MDI
От: AlexNek  
Дата: 19.08.11 13:38
Оценка:
Здравствуйте, neo-xil, Вы писали:

NX>Добрый день.


NX>Непонятный глюк с окнами MDI.

NX>Путь воспроизведения:
NX>1. Создать приложение MDI
NX>2. Открыть окно в приложении, максимизировать его. Кнопки окна MDI [_][O][X] — на месте.

NX>3. Открыть еще одно окно(поскольку уже открытое окно максимизировано, то и новое тоже будет максимизировано). По факту открытия окна нужно модифицировать меню (только не слиянием с меню окна MDI) — добавить удалить пункт меню, не обязательно верхнего уровня. Кнопки окна MDI [_][O][X] — исчезли.

Делаем примерно те же действия, кнопки не исчезают.
Думаю, как и советовали, нужно резать исходное приложение. То бишь убирать все лишнее до минимума.
Cообщение написано в ... << RSDN@Home 1.2.0 alpha 5-AN-R6 rev. 7918>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.