Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2012, 19:48   #1
andrew_jr20
Пользователь
 
Регистрация: 01.06.2011
Сообщений: 53
По умолчанию ShowInTaskbar + MDI

Добрый день.
Понадобилось заказчикам следующее поведение дочерних mdi-окон: часть этих окон должны быть полностью дочерними по отношению к главному окну, но в то же время у этих окон должно нормально срабатывать свойство ShowInTaskbar, то есть эти окна должны отображаться в панели задач и, соответственно, должны выбираться по alt+tab; так же должно срабатывать свойство TopMost внутри mdi-контейнера, то есть данное окно должно располагаться поверх остальных дочерних окон. Если при создании этих окон не ставить MdiParent = this, то оба этих свойства отрабатывают нормально, но тогда, естественно, вся дочернесть отваливается и всё становится очень плохо.
По первому пункту по этому адресу нашёл вот такой код:
Код:
private void CreateChildWindow()
{
Form2 f = new Form2();

f.ControlBox = false;
f.GotFocus += new EventHandler(Forms_GotFocus);
f.Show();
}

On Forms_GotFocus event validate the focus of the form when get the focus, and need a flag Form variable:

Code Snippet

Form2 formSelected;

void Forms_GotFocus(object sender, EventArgs e)  
{
            Form2 f;

            if (sender == null) return;
            if (sender.GetType() != typeof(Form2)) return;

            f = (Form2)sender;

            if(formSelected != null)
                if (formSelected != f)
                {
                    formSelected.SuspendLayout();
                    formSelected.MdiParent = null;
                    formSelected.WindowState = FormWindowState.Minimized;                   
                    formSelected.ResumeLayout();
                }

            f.SuspendLayout();
            f.MdiParent = this;
            f.WindowState = FormWindowState.Maximized;
            f.ResumeLayout();
            this.formSelected = f;

}
Но он не работает, и я понять не могу, где именно косяк.
Подскажите, возможно ли подправить этот кусок кода, или найти другой более простой способ использовать эти свойства. Заранее спасибо.
andrew_jr20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MDI JK0 Помощь студентам 3 29.10.2010 12:14
MDI Dr.Badnezz Общие вопросы Delphi 0 09.03.2010 21:32
Передача параметра с MDI родителя в MDI child через DLL ByXalkin Общие вопросы Delphi 0 15.12.2009 17:21
MDI W0LF Общие вопросы Delphi 3 08.09.2009 23:53
MDI приложения Pacific Общие вопросы Delphi 2 12.11.2008 01:04